7

1.5.2 jar ファイルを使用して javax.vecmath に対してビルドしようとしています (たとえば、 Java.net http://java3d.java.net/binary-builds.htmlにあります)。

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 ファイルを使用すると、やはりコンパイルできません。

アクセスされるフィールドは、x、y、z のパブリック フィールドを持つ抽象クラスである javax.vecmath.Tuple3d にあります。したがって、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 ファイルに依存しながら、これらのソースを移植可能にする方法を理解する。

4

1 に答える 1

6

「Exception in thread "main" 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/ にインストールされているかどうかを確認します。vecmath.jar (jar、jnilib) を含むすべての Java 3D 1.3 関連ファイルを削除します。これらは役に立ちません。

8月、インタラクティブメッシュ

于 2011-05-28T07:41:56.767 に答える