2011-05-27 70 views
7

嘗試使用1.5.2 jar文件(例如,在Java.net http://java3d.java.net/binary-builds.html上找到)針對javax.vecmath構建。在Windows,Linux但不是OS下可見的訪問方法X

試着打個電話,說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文件。

回答

6

「線程中的異常」主「java.lang.NoSuchMethodError:javax.vecmath.Point3d.getX()」指示不是1.5.2版本,而是訪問vecmath.jar的Apple 1.3版本。在1.5版本中引入了* getter和setter方法

檢查蘋果公司過時的Java 3D版本1.3是否安裝在Mac上的System/Library/Java/Extensions /中刪除所有與Java 3D 1.3相關的文件包括vecmath.jar(JAR,jnilib),他們是無用的。

月,InteractiveMesh

+1

這是它完全是。我已經搜查等地流浪vecmath.jar文件,但沒有一個謝謝。 – npskirk 2011-05-29 17:14:29

+1

同樣的問題在這裏,我必須替換'System/Library/Java/Extensions'中的'vecmath.jar'來使它工作。 – 2012-05-14 09:36:15

相關問題