проблемы с настройкой java3D lib - PullRequest
11 голосов
/ 04 ноября 2010

У меня возникли проблемы с настройкой 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();
    }
}

Я не уверен, что я имел в виду с 'j3dcore-ogl', но я застрял в этой точке. как установить java3D в системной среде или в проекте IDE? пожалуйста, помогите.

IDE: Eclipse SDK 3.5.2

JVM: java-6-sun-1.6.0.22

ОС: Ubuntu 10.04 LTS

Ответы [ 11 ]

22 голосов
/ 07 августа 2013

Я знаю, что этому вопросу уже несколько лет, но ответов здесь было недостаточно для решения проблемы.Они помогли только частично.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) In Eclipse , вам нужно будет выполнить следующие шаги, чтобы выбрать правильный JDK и JRE .

  • Project> Properties> Java Compiler , отметьте «Включить конкретные настройки проекта», затем выберите правильный Уровень соответствия компилятора для вашего проекта.В моем случае это 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, убедитесь, что они включены в ваш Project> Properties> JavaПуть сборки> Библиотеки .Вы можете добавить их, используя Добавить JAR или Добавить внешние JAR , в зависимости от того, скопировали ли вы три JAR в каталог проекта или нет.

6) Теперь пришло время, которое спасло мой день сегодня.

Для каждой из библиотек Java3D, перечисленных в пути сборки Java

  • j3dcore.jar
  • j3dutils.jar
  • vecmath.jar

вам нужно указать Расположение нативной библиотеки . Собственная библиотека - j3dcore-ogl.dll , поэтому отредактируйте расположение собственной библиотеки, указав каталог, содержащий j3dcore-ogl.dll.

Я полагаю, что это все шаги, которые необходимо выполнить, чтобы настроить Java3D в Eclipse, потому что сегодня я настроил все на новом компьютере. Теперь я надеюсь, что эти инструкции спасут день некоторых других бедных Java-начинающих, студентов или программистов: -)

7 голосов
/ 15 ноября 2010

Java жалуется, потому что не может найти нативные библиотеки (файлы * .so) в системном пути, с которым поставляется Java3D. Как именно вы исправите это зависит от вас. Вы можете сделать любое из следующих действий:

1) Убедитесь, что ваш системный путь включает файлы * .so, поставляемые с Java3D

2) Настройте переменную среды LD_LIBRARY_PATH: export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: / usr / lib / "пути к библиотекам java3d" /

3) Установите java.library.path при выполнении java: java -Djava.library.path = $ LD_LIBRARY_PATH: / usr / lib / "путь к java3d-библиотекам" /

Чтобы убедиться, что все настроено правильно, добавьте следующее в свой код Java и убедитесь, что в указанном пути содержатся общие библиотеки

System.out.println("LD Library Path:" + System.getProperty("java.library.path"));
2 голосов
/ 03 октября 2014

Я знаю, что это очень старый вопрос, но некоторые разработчики все еще устанавливают устаревшую версию Java 3D, которую труднее использовать с IDE или без нее. Пожалуйста, лучше используйте Java 3D 1.6.0 и следуйте моим подробным инструкциям (на английском и французском), доступных здесь .

1 голос
/ 23 сентября 2014

В качестве дополнения к данным ответам мне помогло установить java 3d: скопируйте и вставьте все файлы .dll из «C: \ Program Files \ Java \ Java3D \ 1.5.X \ bin \» в «C: \».Программные файлы \ Java \ jre6 \ bin \ ".Поэтому создайте Java3D для моего фактического jre6 (от bin до bin).

Ранее я также установил classpath / (вы также можете указать путь) в 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.

С уважением

0 голосов
/ 27 декабря 2017

Я недавно столкнулся с этой же проблемой, вот как я ее исправил:

Запустите 'strace java filename ' и посмотрите в верхней части строки типа " open (")./usr/lib/jvm/java-8-oracle/jre/bin/../lib/amd64/libpthread.so ", который скажет вам, какие двоичные файлы загружает ваша система.

В моемв данном случае важен amd64.

Вернитесь на страницу загрузки java3d и загрузите двоичные файлы для (в данном случае) amd64 verson и установите его. Перезапишите файлы .so в lib / ext (vecmath, j3dcore,и j3dutils).

Снова протестируйте вашу программу java3d, она должна работать.

0 голосов
/ 31 октября 2015

У меня была именно эта проблема, и решение для меня (я использую eclipse) состояло в том, чтобы загрузить 32-битный (i586) (из https://java3d.java.net/binary-builds.html) архива и использовать эти собственные.

0 голосов
/ 05 января 2015

решено - JonnyO ответ правильный.

Я использую Java 8 на Linux и скачал с https://java3d.java.net/binary-builds.html (возьмите версию linux-amd64 для 64-битной системы Intel).

После разархивирования загруженного файла, а затем разархивирования содержащегося в нем j3d-jre.zip и добавления файлов jar в проект и файла libj3dcore-ogl.so в файл jar все равно не сработало.Мне пришлось добавить libj3dcore-ogl.so в путь к библиотеке.(Ленивый, как я, я просто скопировал его в / usr / lib, что достаточно.)

Теперь это работает.

PS: Убедитесь, что удалили любой другой j3dcore.jar иj3dutils.jar заранее.

0 голосов
/ 01 февраля 2014

У меня была такая же проблема.Решил, установив собственный путь:

Свойства - путь сборки java - libraties - java3Dlib - Расположение собственной библиотеки - Внешняя папка -----> найти путь: .... Java / Java3D / 1.5.1/ bin или путь к файлу: j3dcore-ogl.dll

0 голосов
/ 19 января 2014

Просто попробуйте этот код, это поможет мне:

  GraphicsConfiguration config =
       SimpleUniverse.getPreferredConfiguration();

    Canvas3D canvas3D = new Canvas3D(config);
0 голосов
/ 06 мая 2011

проект / свойства / путь сборки Java / вкладка исходного кода / разверните и выберите собственное расположение библиотеки / перейдите в папку i386.

...