Когда я управляю.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-разрядные библиотеки.