是否无法以不需要安装Java3D的方式嵌入Java3D?

时间:2010-06-02 09:16:23

标签: java eclipse dll 3d java-3d

我正在运行一个大型应用程序,其中一小部分包括Java 3D,问题是许多用户需要使用代码,但是如果他们只是为了运行应用程序而安装Java 3D并不实用甚至不打算使用该部分的应用程序。

是否可以通过编译额外的jar或更改某些路径,将Java 3D包含在项目中,而无需在系统上安装它?或者也许手动包含任何dll?

3 个答案:

答案 0 :(得分:3)

java3d的演示证明这是可能的。 您只需要将所需的jar文件包含在项目分发中。

答案 1 :(得分:0)

是的,有可能。您需要从java3d站点提取所需的jar和本机库。我从java3d演示中删除它们,但这需要挖掘xml启动描述符文件。

您遇到最麻烦的地方是链接到.so / .dll文件。这通常在应用程序启动之前在类路径中指定,但由于在应用程序启动之前您不知道您正在使用的平台,因此它是一个catch22。

有两种可能的解决方案: 1.使用一个检测平台的简单类来引导程序,并为实际应用程序设置一个新的jvm(指定了正确的库)。 2.动态加载库(我从未实际使用过这种方法进行本机实现,但我认为没有理由说不可能)。

不幸的是,这两种方法都不是很直接。

答案 2 :(得分:0)

通过简单地将jar添加到类路径并将相应的dll放入运行Java的.bat文件的“working”目录中,我已经完成了这个没有问题(许多用户测试它可以工作,Windows操作系统) 。一个问题是我必须有两个蝙蝠文件 - 一个32位和一个64位。每个bat文件都将相应的dll复制/重命名为j3dcore-ogl.dll,因为根据你运行的Java(32/64位)版本,需要一个不同的jar。

示例.bat文件:

del j3dcore-ogl.dll 复制j3dcore-ogl-64.dll j3dcore-ogl.dll java -Xmx2048m -classpath ./YourJar.jar;./lib/tinylaf.jar;./lib/j3dcore.jar;./lib/j3dutils.jar;./lib/vecmath.jar your.package.MainClass @pause