【问题标题】:java3d not working on mac mountain lionjava3d不能在mac山狮上工作
【发布时间】:2012-10-05 01:54:05
【问题描述】:


我已经尝试了几个小时让 java 3d 在我的 macbook 上工作,但我无法弄清楚它有什么问题...... 这是我所做的:
- 我下载了 java3d 1.5 并替换了 /System/Library/Java/Extensions 中的原始文件。
- 然后我按照教程在同一 (...)/Java/Extensions 文件夹中安装了 JOGL。
- 由于它仍然不起作用,我决定尝试 java3d 的原始版本,所以我重命名了文件。

我正在使用 java 1.7.0_07 开发 Mac os x 山狮 这是 java -version 的结果:

    java version "1.7.0_07"
    Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
    Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

这是我的 Java/extensions 文件夹的内容:

    AppleScriptEngine.jar   gluegen-rt.jar          j3dutils.jar.new        libAppleScriptEngine.jnilib libgluegen-rt.jnilib            libnewt.jnilib
    MRJToolkit.jar          j3daudio.jar            jai_codec.jar           libJ3D.jnilib               libjogl_desktop.jnilib          mlibwrapper_jai.jar
    QTJava.zip              j3dcore.jar             jai_core.jar            libJ3DAudio.jnilib          libmlib_jai.jnilib              vecmath.jar
    dns_sd.jar              j3dcore.jar.new         jogl-all.jar            libJ3DUtils.jnilib          libnativewindow_awt.jnilib      vecmath.jar.new
    gluegen-java-src.zip    j3dutils.jar            jogl-java-src.zip       libQTJNative.jnilib         libnativewindow_macosx.jnilib

我可以用 javac 编译 java 3d 代码,但这是我尝试启动它时的结果:

    $> java Hello3d
    JavaVM WARNING: JAWT_GetAWT must be called after loading a JVM
    AWT not found
    Exception in thread "main" java.lang.NoClassDefFoundError: apple/awt/CGraphicsDevice
        at javax.media.j3d.GraphicsConfigTemplate3D.<clinit>        (GraphicsConfigTemplate3D.java:55)
        at com.sun.j3d.utils.universe.SimpleUniverse.getPreferredConfiguration(SimpleUniverse.java:368)
        at com.sun.j3d.utils.universe.Viewer.<init>(Viewer.java:348)
        at com.sun.j3d.utils.universe.Viewer.<init>(Viewer.java:298)
        at com.sun.j3d.utils.universe.SimpleUniverse.<init>(SimpleUniverse.java:215)
        at com.sun.j3d.utils.universe.SimpleUniverse.<init>(SimpleUniverse.java:177)
        at com.sun.j3d.utils.universe.SimpleUniverse.<init>(SimpleUniverse.java:88)
        at Hello3d.<init>(Hello3d.java:13)
        at Hello3d.main(Hello3d.java:27)
    Caused by: java.lang.ClassNotFoundException: apple.awt.CGraphicsDevice
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        ... 9 more

我试图启动的 java 类来自the official tutorial

你知道我该如何解决这个问题吗?
感谢您的帮助!

【问题讨论】:

  • 首先,安装 Java3D 或任何其他 Java 库作为扩展或在 JVM 中是一个坏主意。在使用 Java Webstart、applet 和其他应用程序时可能会导致冲突。您引用的“官方”教程既不是官方的也不是最新的,而我的是:gouessej.wordpress.com/2012/08/01/… 遵循哈维的以下建议,它应该可以完美运行。

标签: java macos osx-mountain-lion java-3d


【解决方案1】:

恐怕Java3D 1.5 与OSX 的新版本不兼容,没什么 你可以的。

我已经分叉了 Java3D 代码并用 JOGL2 后端替换了本机代码后端

你可以在这里找到关于在 OSX 上安装 JOGL2 的信息(那里还有一个 Java3d 论坛可用): http://jogamp.org/

您可以在此处(在下载中)为我的 Java3d 获取预构建的 jar 文件:

https://github.com/hharrison/

(j3d-core, j3d-utils, vecmath)

公平警告,目前这只适用于 OSX 上的 Java6,我一直在尝试调试 OSX 上 Java7 的问题,但没有 ETA 的解决方案.....祝你好运!

【讨论】:

  • 感谢您的回答!你的 fork 是否和 Java3d 一样工作? (相同的名称,相同的潜在错误等)?我问这个是因为我必须为学校做一个 Java3d 项目,我需要知道我是否可以使用你的 fork...谢谢!
  • 正确,API 更改为零。不同之处在于一些多线程修复、一些内部内存使用减少以及本机 D3D 和 OpenGL 后端的删除。我的 fork 是一个纯 java 项目,依赖 JOGL2 来做原生互操作。
  • 迁移到 JOGL2 是一项艰巨的任务 - 它完全重新设计了配置文件等。有没有办法只用“sun.awt”重新编译旧的东西。 vs“apple.awt”,因为这是那些组件移动的地方?
  • 嗨 - 我正在尝试使用来自 github 的最新版本的 Java3D,即使我在论坛上读到 Java7 问题已修复(至少使用 JCanvas 时)。知道我做错了什么吗?
  • JeffG:API 发生了 项更改,使用 JOGL2 的切换完全在幕后,您应该能够用我的替换旧的 java3d jar,并添加 jogl2 罐子,它应该只是工作(tm)。
猜你喜欢
  • 1970-01-01
  • 2013-08-02
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
相关资源
最近更新 更多