尝试使用 1.5.2 jar 文件(例如在 Java.net http://java3d.java.net/binary-builds.html上找到)针对 javax.vecmath 进行构建。
尝试拨打电话,比如说 Point3d;
public class Foo {
public static void main(String[] args) {
Point3d t = new Point3d(1.0, 1.0, 1.0);
System.out.println(t.getX());
}
}
在 64 位 Windows 和 Linux(我只尝试过 Ubuntu 10.04,64 位)中,它可以编译并运行。
在 OS X (10.6.7) 中它不会编译:
...: cannot find symbol
symbol : method getX()
location: class javax.vecmath.Point3d
System.out.println (t.getX());
这是使用完全相同的物理 vecmath.jar
如果我直接使用源代码,它会在 OS X 上编译,但不会运行
Exception in thread "main" java.lang.NoSuchMethodError: javax.vecmath.Point3d.getX()D
如果我自己在 OS X 上将源代码编译为 jar 文件,然后使用上面示例中的 jar,再次无法编译。
现在,正在访问的字段位于 javax.vecmath.Tuple3d 中,这是一个抽象类,具有 x、y 和 z 的公共字段。所以在 OS X 上这将起作用(实际上,它似乎在任何地方都有效)。
public class Foo {
public static void main(String[] args) {
Point3d t = new Point3d(1.0, 1.0, 1.0);
System.out.println(t.x);
}
}
问题是,我正在开发一个依赖于 vecmath.jar 的代码库,其中维护人员在 Windows 上并希望继续使用访问器方法,但我在 OS X 上。
我正在寻找两者:
(1) 了解发生了什么 (2) 在依赖 vecmath.jar 文件的同时弄清楚如何使这些源可移植。