【问题标题】:Overriding Java System Library with newer class on Mac在 Mac 上用较新的类覆盖 Java 系统库
【发布时间】:2011-05-25 13:41:39
【问题描述】:

我正在尝试在我的 Mac 上编译和运行 Java3D 项目,但遇到了一些问题。我正在使用 Eclipse。该程序依赖于旧版本的 Java3D,但即使我在 Eclipse 中添加了正确的 Jars,它仍然在默认系统位置中查找。

在 Eclipse 中运行我的程序时,我遇到了这个问题:

线程“AWT-EventQueue-0”中的异常 java.lang.NoSuchMethodError: javax.media.j3d.BranchGroup.pickAllSorted(IILjavax/media/j3d/PickShape;)[Ljavax/media/j3d/PickInfo; 在 com.sun.j3d.utils.pickfast.PickTool.pickAllSorted(PickTool.java:410)

BranchGroup.pickAllSorted 在 Mac 默认 JRE 系统库 (JVM 1.6.0) 中不存在,但它确实存在于我包含的正确 JAVA3D jar 中。我已将它们添加到我的构建路径中,并且它们在 Properties-Java Build Path-Order and Export 中的 JRE 系统库上方被引用。这似乎应该是解决方案,但它不起作用。

我已经尝试了一段时间,但无法让它发挥作用。我有一个可能的线索是尝试将 .jars 放在 /Library/Java/Extensions 中。当我这样做时,我得到了一个 OpenGL 错误,我的程序根本没有打开,但我猜它正在做一些事情。

感谢您的帮助。

【问题讨论】:

    标签: java eclipse macos dependencies java-3d


    【解决方案1】:

    在 Eclipse 中,转到 Run > Run Configurations > Your Main > Arguments > VM Arguments 并添加 -Xbootclasspath/p:newjava3d.jar。这会将 newjava3d.jar 预先添加到您的引导类路径中,因此将从它加载相关的类。

    【讨论】:

    • 将此行添加到 Vm 参数:-Xbootclasspath/p:j3dcore.jar(或 a:j3dcore.java)导致:线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError : com/sun/opengl/util/BufferUtil at javax.media.j3d.JoglPipeline.(JoglPipeline.java:5048)
    • 您必须按照 Java3D 发行版附带的README-unzip.html 文件中的说明安装 JOGL。您可以在 java3d.dev.java.net/binary-builds.html 找到最新的 Java3D 发行版
    • 自述文件中没有提到,但就是这样,非常感谢!
    【解决方案2】:

    启动程序时,尝试使用-Xbootclasspath 或-Xbootclasspath/a 开关将您的jar 添加到类路径中。 See the java tool documentation.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 2012-08-08
      • 2013-12-19
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      相关资源
      最近更新 更多