【问题标题】:How can I generate list of classes in order of dependency?如何按依赖顺序生成类列表?
【发布时间】:2010-12-29 15:43:47
【问题描述】:

我正在为在 Oracle JVM 中运行的 Java 应用程序编写构建脚本。为了导入 50 多个类,看来我需要按顺序导入它们,因此在编译之前存在任何依赖项。

对于每个类,我为每个文件运行“create or replace and compile java source {className} as {classPath}”。这样做会给我一个编译错误,因为没有导入所需的类。

如何按依赖顺序生成类列表 - 也就是说,当您沿着列表向下移动时,类的依赖关系在上面列出。我更愿意将其作为 Ant 任务来执行。

此外,如果您对如何导入这些类有更好的了解,我很想听听您的想法。

【问题讨论】:

  • 作为一个小技巧,在所有编译错误之后,我尝试为每个 26 个无效类运行 ALTER JAVA CLASS "/d6c58067_JdbcPayslipDao" RESOLVE;。这不起作用,仍然抱怨编译错误。
  • 你只关心静态依赖还是你还需要了解 Class.forName("Foo") 之类的东西?
  • 只是静态依赖

标签: java oracle ant plsql dependencies


【解决方案1】:

我无法想象你为什么需要这样做,但如果你真的需要这样做,我想知道是否破解一个小类加载器,它会在加载时打印出每个类并从那里加载你的应用程序会给你依赖图?

【讨论】:

  • 需要注意的是Java中的依赖可能是循环的。在这种情况下,实际上没有适用的命令。
【解决方案2】:

使用Ant 任务javac 编译文件系统中的类。如果需要更严格的依赖性检查,请使用任务depend。使用loadjava工具将.class.java文件以任意顺序加载到数据库中。

【讨论】:

  • 目前正在查看dbms_java.loadjava()
【解决方案3】:

为了导入 50 多个类,看来我需要按顺序导入它们,以便在编译之前存在任何依赖项。

我从来没有为了编译 Java 做过这样的事情。

这就是 Ant 的诞生。我建议只使用 Ant 执行此操作。设置 就没有问题了。

【讨论】:

  • 您是对的,在 Java 或 Ant 的世界中,但这是通过 SQLPlus 将 Java 类加载到 Oracle 中。我正在使用 Ant 构建部署的工件并动态地使 SQL 加载类(即创建...)
【解决方案4】:

蛮力法:将 50 个 CREATE 放入一个批处理文件中执行,直到没有发现错误。在 shell 脚本中创建循环。当然,如果源中有错误,它永远不会结束,但我假设它们没问题。

【讨论】:

  • 我认为客户不会同意这一点。到目前为止,他们已经采取了非常严格的做法,并且似乎有利于我手动分析类以按顺序生成类列表。
【解决方案5】:

你不能加载一个jar文件吗?为什么必须是单独的类?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 2021-10-07
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    相关资源
    最近更新 更多