Разве невозможно встроить Java3D так, чтобы мне не нужно было его устанавливать? - PullRequest
1 голос
/ 02 июня 2010

Я запускаю большое приложение, и небольшая его часть включает Java 3D, проблема в том, что многим пользователям нужно использовать код, но для всех не практично устанавливать Java 3D только для запуска приложения, если даже не собираюсь использовать этот раздел приложения.

Возможно ли путем компиляции дополнительного jar или изменения некоторых путей включить Java 3D в проект без его установки в системе? Или, возможно, вручную включить какие-либо DLL?

Ответы [ 3 ]

3 голосов
/ 02 июня 2010

Демоверсии на java3d доказывают, что это возможно. Вам нужно только включить необходимые jar-файлы в ваш дистрибутив проектов.

0 голосов
/ 17 июня 2011

Я сделал это без проблем (и многие пользователи проверили, что это работает, ОС Windows), просто добавив jar-файлы в classpath и поместив соответствующие dll-файлы в «рабочий» каталог, где запущен файл .bat с Java. , Одна загвоздка в том, что мне нужно было иметь два bat-файла - один 32-битный и один 64-битный. Каждый файл bat копирует / переименовывает соответствующую dll в j3dcore-ogl.dll, поскольку в зависимости от того, какую версию Java (32/64 бит) вы используете, требуется другой jar.

Пример .bat файла:

del j3dcore-ogl.dll скопировать j3dcore-ogl-64.dll j3dcore-ogl.dll java -Xmx2048m -classpath ./YourJar.jar;./lib/tinylaf.jar;./lib/j3dcore.jar;./lib/j3dutils.jar;./lib/vecmath.jar your.package.MainClass @ Пауза

0 голосов
/ 03 июня 2010

Да, это возможно. Вам нужно будет извлечь необходимые jar-файлы и нативные библиотеки с сайта java3d. Я вытащил их из демоверсий java3d, но для этого нужно покопаться в файлах дескриптора запуска xml.

Самое сложное, с чем вы столкнетесь, это ссылки на файлы .so / .dll. Обычно это указывается в classpath перед запуском приложения, но поскольку вы не знаете, какую платформу вы используете, до запуска приложения, это ловушка22.

Существует два возможных решения: 1. Загрузите вашу программу с помощью простого класса, который определяет платформу и устанавливает новый jvm (с указанием соответствующих библиотек) для реального приложения. 2. Динамически загружать библиотеки (я никогда не использовал этот метод для нативных реализаций, но я не вижу причин, почему это было бы невозможно).

К сожалению, ни один из методов не является настолько простым.

...