Проблемы с конфигурацией java3D lib
У меня возникла проблема с настройкой java3D для работы с моей средой IDE...
Я загрузил j3d-1_5_2-linux-i586.zip и распаковал j3dcore.jar, j3dutils.jar, vecmath.jar, libj3dcore-ogl.so, libj3dcore-ogl-cg.so и добавил их все как "Ссылка Библиотеки в моей папке проекта. это избавляет от любых предупреждений компиляции, которые я получал, но когда я компилирую и запускаю приложение, я получаю следующее исключение!
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231)
at java.security.AccessController.doPrivileged(Native Method)
at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:200)
at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:157)
at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:987)
at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:299)
at Hello3d.<init>(Hello3d.java:10)
at Hello3d.main(Hello3d.java:18)
вот и быстрый взгляд на исходный код. ПРИМЕЧАНИЕ. Eclipse автоматически вставлял пути библиотек импорта с помощью Ctrl + Shift + O, когда они были добавлены в качестве ссылочных библиотек.
import javax.media.j3d.BranchGroup;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class Hello3d {
public Hello3d(){
SimpleUniverse universe = new SimpleUniverse();
BranchGroup group = new BranchGroup();
group.addChild(new ColorCube(0.3));
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(group);
}
public static void main(String[] args){
new Hello3d();
}
}
im не уверен, что им означало "j3dcore-ogl", но я застрял на этом этапе. как вы устанавливаете java3D в системной среде или в проекте IDE? пожалуйста, помогите.
IDE: Eclipse SDK 3.5.2
JVM: java-6-sun-1.6.0.22
ОС: Ubuntu 10.04 LTS
Ответы
Ответ 1
Я знаю, что этот вопрос сейчас несколько лет, но ответов здесь было недостаточно для решения этой проблемы. Они помогли частично. http://www.filsa.net/2008/07/17/eclipse-java3d-and-javalibrarypath/ также было немного полезно, но этого было недостаточно. Поэтому я чувствовал себя обязанным написать полный контрольный список, чтобы Java3D работал в Eclipse.
Несколько месяцев назад у меня уже была такая же проблема, и я как-то решил ее, не понимая, что я сделал. Сегодня я хотел настроить свою среду на другом компьютере и угадать, что у меня снова была такая же проблема. И я забыл, что мне делать... На этот раз я решил проблему более систематически, и теперь я понимаю каждый шаг.
Решение - каждый шаг подробно
1) Если вы импортируете проект другого пользователя, убедитесь, что в Eclipse установлен и выбран JDK и JRE. Мой Eclipse выбрал последнюю версию JRE 7. Единственный, который я установил. Но проект, над которым я работаю, требует JDK 6 и JRE 6. Я рекомендую следующую структуру вашей файловой системы, если вам нужно иметь несколько версий java
- somePath/Java/JDK/JDK6/
- somePath/Java/JDK/JDK7/
- somePath/Java/JRE/JRE6/
- somePath/Java/JRE/JRE7/
- somePath/Java/Java3D/
2) В Eclipse вам нужно будет сделать следующие шаги, чтобы выбрать правильный JDK и JRE.
- Проект > Свойствa > Компилятор Java, установите флажок "Включить специальные настройки проекта", затем выберите правильный уровень соответствия компилятора для вашего проекта. В моем случае это 1.6 для использования с JDK6. (Именование действительно запутывало для меня, по крайней мере, 6 был намеком.)
- Вы также должны убедиться, что при запуске приложения используется правильный JRE. Поэтому откройте "Run" > "Run Configurations" и выберите вкладку JRE. Если вы используете JDK 6, вам необходимо убедиться, что используется JRE 6. Вы можете добавить JRE, если вы нажмете на "Установленные JRE", а затем добавьте каталог somePath/Java/JRE/JRE6/.
3) Правильно настроив среду Java, убедитесь, что на вашем компьютере установлена Java3D. Вы не можете сделать с этим ничего плохого.
4) В каталоге установки Java3D найдите файлы
- j3dcore-ogl.dll (для Windows, на Linux это j3dcore-ogl.so)
- j3dcore.jar
- j3dutils.jar
- vecmath.jar
Не важно, где находятся эти файлы, если вы правильно настроите среду, что я объясню. Поэтому, если вы хотите, вы можете скопировать эти файлы в каталог проекта, чтобы иметь все необходимое в одном месте.
5) Расположив эти файлы, убедитесь, что
- В вашей операционной системе расположение j3dcore-ogl.dll добавляется в переменную PATH. Файл .dll или .so содержит собственный код машины, который использует Java3D. Ваша система должна знать о существовании этого кода.
В Windows, чтобы установить переменную PATH, вы откроете Системные параметры на панели управления и выберите "Дополнительные параметры системы". Внизу вы найдете кнопку "Переменные среды". В списке Системные переменные вы найдете переменную "Путь". Убедитесь, что каталог j3dcore-ogl включен в список путей.
- В Eclipse, где бы ни находились файлы *.jar, убедитесь, что они включены в ваш проект > Свойствa > Путь сборки Java > Библиотеки. Вы можете добавить их либо с помощью Добавить JARs, либо Добавить внешние JAR, в зависимости от того, скопировали ли вы три JAR в каталог проекта или нет.
6) Теперь идет часть, которая спасла мой день сегодня.
Для каждого из библиотек Java3D, перечисленных в пути сборки Java
- j3dcore.jar
- j3dutils.jar
- vecmath.jar,
вам нужно указать Местоположение локальной библиотеки. Собственная библиотека - это j3dcore-ogl.dll, поэтому отредактируйте местоположение родной библиотеки, чтобы указать на каталог, содержащий j3dcore-ogl.dll.
Я считаю, что все эти шаги необходимо сделать для настройки Java3D в eclipse, потому что сегодня я настроил все на новом компьютере. Теперь я надеюсь, что эти инструкции сохранят других слабых Java-новичков, студентов или программистов: -)
Ответ 2
Java жалуется, потому что не может найти родные библиотеки (файлы *.so) на вашем системном пути, к которому поставляется Java3D. Точно, как вы это исправите, зависит от вас. Вы можете сделать любое из следующих действий:
1) Убедитесь, что ваш системный путь содержит файлы *.so, поставляемые с Java3D
2) Установите переменную окружения LD_LIBRARY_PATH: export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/usr/lib/ "path-to-java3d-libraries" /
3) Задайте java.library.path при выполнении java: java -Djava.library.path = $LD_LIBRARY_PATH:/usr/lib/ "path-to-java3d-libraries" /
Чтобы убедиться, что все правильно установлено, добавьте следующее к вашему Java-коду и убедитесь, что указанный путь содержит общие библиотеки на нем
System.out.println("LD Library Path:" + System.getProperty("java.library.path"));
Ответ 3
В качестве дополнения к данным ответам, что помогло мне установить java 3d, было:
Скопируйте и вставьте все DLL файлы из "C:\Program Files\Java\Java3D\1.5.X\bin \" в папку "C:\Program Files\Java\jre6\bin \".
Так что создайте Java3D для моего фактического jre6 (от bin до bin).
Ранее я также устанавливал путь к классу/(вы также можете установить путь) к
3dcore.jar, j3dutils.jar, vecmath.jar, j3dcore-ogl.dll
но все равно не сработало.
После копирования j3dcore-ogl.dll(описанного выше) и левого пути к элементу 3dcore.jar, j3dutils.jar, vecmath.jar(в разделе "C:\Program Files\Java\Java3D\1.5.X\ext\), он работал нормально.
Я нашел помощь здесь: http://www.xinapse.com/Manual/install_windows.html
Посмотрите на пункт 2.
С наилучшими пожеланиями
Ответ 4
Я знаю, что это очень старый вопрос, но некоторые разработчики все еще устанавливают устаревшую версию Java 3D, которая сложнее использовать с или без IDE. Пожалуйста, используйте Java 3D 1.6.0 и следуйте моим подробным инструкциям (на английском и французском языках) здесь.
Ответ 5
project/properties/java build path/source tab/expand и выберите местоположение собственной библиотеки/перейдите в папку i386.
Ответ 6
Просто попробуйте этот код, он мне поможет:
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
Ответ 7
У меня была та же проблема. Решил, что он установил родной путь:
Свойства - путь сборки java - libraties - java3Dlib - Расположение исходной библиотеки - Внешняя папка ----- > найдите путь:.... Java/Java3D/1.5.1/bin или путь, где находится файл: j3dcore-ogl.dll
Ответ 8
SOLVED - ответ JonnyO прав.
Я использую java 8 в linux и загружаюсь из https://java3d.java.net/binary-builds.html (возьмите версию linux-amd64 для 64-разрядной системы Intel).
После распаковки загруженного файла, а затем распаковки содержащегося j3d-jre.zip и добавления файлов jar для проекта и libj3dcore-ogl.so в банку, он все равно не работает. Мне пришлось добавить libj3dcore-ogl.so в путь к библиотеке. (Лень, как и я, я просто скопировал его в /usr/lib, что достаточно.)
Теперь он работает.
PS: Обязательно удалите любые другие j3dcore.jar и j3dutils.jar заранее.
Ответ 9
У меня была эта точная проблема, и решение для меня (я использую eclipse) состояло в том, чтобы загрузить 32-битный (i586) (из https://java3d.java.net/binary-builds.html) и используйте этих туземцев.
Ответ 10
Недавно я столкнулся с этой проблемой, вот как я ее исправил:
Запустите 'strace java имя_файла' и посмотрите в верхней части строки типа " open (" /usr/lib/jvm/java -8-oracle/jre/bin/../lib/amd64/libpthread.so ", который расскажет вам, какие бинарные файлы загружаются вашей системой.
В моем случае это важно.
Вернитесь на страницу загрузки java3d и загрузите двоичные файлы для (в данном случае) amd64 verson и установите это. Перезапишите файлы .so в lib/ext (vecmath, j3dcore и j3dutils).
Проверьте свою программу java3d еще раз, она должна работать.
Ответ 11
У меня была эта проблема.
достаточно скачать java3d-плагин и установить его.
в вашей поисковой системе, например, в Google search "java3d plugin"
и скачайте, чтобы установить его.