【发布时间】:2013-03-04 12:40:14
【问题描述】:
当我尝试使用 ant 构建我的项目时,我得到: “java.lang.NoClassDefFoundError: sun/org/mozilla/javascript/internal/Scriptable”
这源于我对 Rhino 的使用(Oracle JDK 附带的捆绑 java 脚本)
- 当我使用 Eclipse 构建项目时,一切正常。
- 我使用的 ant 文件是由 eclipse 生成的,除了 java-script 依赖项之外,它工作正常。
- 这些依赖项位于 oracle JDK 附带的 RT.jar 中。
- 我已经尝试了 jdk6_0_u41 和 jdk7,并且都给出了相同的结果:在 eclipse 中成功,在 ant 中失败。
- 我尝试在 ubuntu 10 和 12 上构建
我还看到了另外两个我认为无法接受的建议:
- 一个线程建议将 RT.jar 复制到项目 lib 目录中。 (RT 是整个 java 运行时!)
- 另一个线程建议我不应该使用:sun/org/mozilla/javascript/internal。但由于我正在进行高级操作(调用对象方法、注册回调等),我认为除了使用 sun.org.mozilla.javascript.internal 系列类之外别无选择。
【问题讨论】:
-
Ant 是否使用相同的构建类路径?考虑使用您自己的 Rhino 实现。 Java 让no guarantees 了解不同版本/实现的脚本引擎。
-
Ant 文件是由 eclipse 生成的,所以我假设它使用相同的类路径。除此之外,我在构建机器上只安装了一个 jdk(我竭尽全力确保没有安装 openJDK)。因此,在没有 JDK 提供的 RT.jar 的情况下,java 编译器链接是否可能?
标签: java eclipse ant build rhino