gpt4 book ai didi

java - 访问器方法在 Windows、Linux 下可见,但在 OS X 下不可见

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:26:20 25 4
gpt4 key购买 nike

尝试使用 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 的公共(public)字段。所以在 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 文件的同时使这些源可移植。

最佳答案

“线程“主”java.lang.NoSuchMethodError 中的异常:javax.vecmath.Point3d.getX()”表示访问的不是 1.5.2 版本,而是 Apple 1.3 版本的 vecmath.jar。 *getter"和 "setter"方法是在 1.5 中引入的。

检查 Apple 过时的 Java 3D 版本 1.3 是否安装在您的 Mac 上的 System/Library/Java/Extensions/中。删除所有 Java 3D 1.3 相关文件,包括 vecmath.jar (jar, jnilib),它们没有用。

八月,InteractiveMesh

关于java - 访问器方法在 Windows、Linux 下可见,但在 OS X 下不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com