Попытка сборки с использованием javax.vecmath с использованием файла jar 1.5.2 (например, на 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 в приведенном выше примере, опять же, не могу его скомпилировать.
Теперь доступные поля находятся в 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.