加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在Windows,Linux下可见的访问器方法,但不是OS X.

发布时间:2020-12-15 00:50:12 所属栏目:Java 来源:网络整理
导读:尝试使用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.
尝试使用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);
    System.out.println(t.x);
  }
}

问题是,我正在开发一个依赖于vecmath.jar的代码库,其中维护者在Windows上并希望继续使用访问器方法,但我在OS X上.

我期待两个:

(1)了解发生了什么
(2)根据vecmath.jar文件弄清楚如何使这些源可移植.

解决方法

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

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

八月,InteractiveMesh

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读