#java #java-3d
#java #java-3d
Вопрос:
Попытка сборки на основе 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:
«Исключение в потоке «main» java.lang.Ошибка NoSuchMethodError: javax.vecmath.Point3d.getX()» указывает, что не версия 1.5.2, а версия Apple 1.3 для vecmath.jar доступен. Методы «getter» и «setter» были введены в версии 1.5.
Проверьте, не установлена ли устаревшая Java 3D версии 1.3 от Apple в System / Library / Java / Extensions / на вашем Mac. Удалите все файлы, связанные с Java 3D 1.3, включая vecmath.jar (jar, jnilib), они бесполезны.
Август, интерактивная сетка
Комментарии:
1. Это было именно так. Я искал в других местах блуждающий vecmath.jar файлы, но не этот. Спасибо.
2. Здесь та же проблема. Мне пришлось заменить
vecmath.jar
вSystem/Library/Java/Extensions
, чтобы заставить его работать.