Когда я управляю.jar, я получаю " нет lwjgl на java.библиотека.путь" ошибка
Я делаю базовую игру на Java, используя библиотеку LWJGL через Netbeans.
Я создал библиотеку с lwjgl, lwjgl_util и jinput .Джара, и я добавил-Джава.библиотека.путь=C:LWJGLnativewindows к категории "выполнить" в свойствах проекта.
когда я запускаю файл в Netbeans, он работает отлично без проблем. Но когда я бегу .jar, дважды щелкнув файл, ничего не появляется (даже мгновенное окно ошибки cmd, насколько я могу судить). И когда я запускаю файл через командную строку, я получаю:
C:Users0160765>java -jar "C:Users0160765DocumentsNetBeansProjectsGame
distGame.jar"
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.libr
ary.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.lwjgl.Sys.run(Sys.java:73)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
at org.lwjgl.Sys.loadLibrary(Sys.java:82)
at org.lwjgl.Sys.<clinit>(Sys.java:99)
at org.lwjgl.opengl.Display.<clinit>(Display.java:130)
at game.Draw.createWindow(Draw.java:198)
at game.Draw.init(Draw.java:214)
at game.Draw.run(Draw.java:56)
at game.Main.main(Main.java:9)
Я попытался переместить DLL и .файлы библиотеки jar вокруг папки " lib " в том же каталоге, что и игра.jar, и перемещение их в тот же каталог, что и Game.фляги, но я получаю ту же ошибку. Может ли кто-нибудь помочь мне понять, почему я не могу заставить это работать за пределами netbeans?
7 ответов
вы должны указать jvm, где находятся собственные файлы, используя параметр командной строки-Djava.библиотека.path= "путь / к / туземцам". Вы можете использовать пакет (.bat) файл, чтобы указать это и запустить приложение для вас.
в качестве альтернативы вы можете использовать такой инструмент, как JarSplice чтобы создать один исполняемый файл jar из всех ваших банок и в то же время включить в него свои собственные файлы. Он автоматизирует сложную часть указания туземцев вручную и обеспечивает более приятный опыт конечного пользователя.
чтобы использовать JarSplice просто выберите игру.jar, lwjgl.jar, lwjgl_util.jar и jinput.банка на вкладке банки. Потом все *.dll,*.Итак,*.dylib и *.файлы jnilib на вкладке туземцы. Добавьте свой основной класс на вкладке класс и создайте единственную исполняемую банку.
LWJGL нуждается в собственных компонентах для вашей конкретной платформы, чтобы быть в java.library.path
. Они находятся в подкаталоге native
в распределении LWJGL и заканчивается на .so
на Linux, OSX и Solaris и .dll
для windows.
когда у меня была эта проблема, это было потому, что я случайно поставил аргумент, чтобы указать местоположение туземцев (-Djava.библиотека.path= / native/) в поле "аргументы" в категории "выполнить" панели "Параметры" вместо "параметры виртуальной машины". Как видно здесь: http://s30.postimg.org/6f90akidt/Capture.png
и еще один способ сделать это с Java Web Start (jnlp):http://lwjgl.org/forum/index.php?topic=3763.0
Это делает совместное использование вашего проекта проще в некоторых отношениях.
У меня была эта проблема и исправлена с помощью jarSplice (http://ninjacave.com/jarsplice)
убедитесь, что вы удалите все предварительно размещенные аборигены в вашей банке, прежде чем создавать банку fat, иначе она создаст дубликат ошибки
Я также получил ту же ошибку, а потом понял, что я назвал файл "my_lib.zip "вместо" my_lib.сосуд." Может, это кому-то поможет.
еще одна вещь, чтобы проверить:
- Если вы используете 32-битную JVM, вам нужны 32-битные библиотеки. (Даже на 64-битной ОС)
- Если вы используете 64-разрядную JVM, вам нужны 64-разрядные библиотеки.