Метод доступа, видимый под Windows, Linux, но не OS X - PullRequest
7 голосов
/ 27 мая 2011

Попытка сборки с использованием 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.

1 Ответ

6 голосов
/ 28 мая 2011

«Исключение в потоке» main «java.lang.NoSuchMethodError: javax.vecmath.Point3d.getX ()» указывает на то, что осуществляется доступ не к версии 1.5.2, а к версии 1.3 файла vecmath.jar для Apple. Методы * getter "и" setter "были введены в 1.5.

Проверьте, установлена ​​ли устаревшая версия Apple 3D Java 1.3 в System / Library / Java / Extensions / на вашем Mac. Удалите все связанные с Java 3D 1.3 файлы, включая vecmath.jar (jar, jnilib), они бесполезны.

Август, InteractiveMesh

...