尝试使用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文件弄清楚如何使这些源可移植。
答案 0 :(得分:6)
“线程中的异常”主“java.lang.NoSuchMethodError:javax.vecmath.Point3d.getX()”表示不是1.5.2版本,而是访问vecmath.jar的Apple版本1.3。 * getter“和”setter“方法在1.5中引入。
检查Mac上的System / Library / Java / Extensions /中是否安装了Apple过时的Java 3D 1.3版。删除所有与Java 3D 1.3相关的文件,包括vecmath.jar(jar,jnilib),它们都没用。
八月,InteractiveMesh