Проблемы с конфигурацией 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"

и скачайте, чтобы установить его.