[RESOLVIDO]Erro "no lwjgl in java.library.path" no eclipse

Olá pessoal!
Estou desenvolvendo um jogo em java no eclipse, utilizando a biblioteca Slick2D. Eu importei a biblioteca para o projeto da seguinte maneira: fui em project -> properties -> Java Build Path -> Libraries -> Add External JARs -> e importei os arquivos que precisava.

Mas aí, quando tentei rodar o projeto, ele deu o seguinte erro:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.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$1.run(Sys.java:75) at java.security.AccessController.doPrivileged(Native Method) at org.lwjgl.Sys.doLoadLibrary(Sys.java:68) at org.lwjgl.Sys.loadLibrary(Sys.java:84) at org.lwjgl.Sys.<clinit>(Sys.java:101) at org.lwjgl.opengl.Display.<clinit>(Display.java:128) at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39) at java.security.AccessController.doPrivileged(Native Method) at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36) at Puzzle.main(Puzzle.java:42)

Encontrei algumas sugestões para esse erro. A maioria delas envolvia adicionar -Djava.library.path=<path/to/library> no código, mas nenhuma delas explicava onde ou como adicionar isso.
Se alguém puder ajudar, agradeço.

=)

O add external jars faz exatamente o que o -D faria.

O LWJGL exige também que você configure algumas dlls para funcionar. Dê uma olhada nesse tutorial:
http://www.lwjgl.org/wiki/index.php?title=Setting_Up_LWJGL_with_Eclipse

Eu não recomendo o Java para jogos. O suporte dele é bem primário e coisas como sons e entrada de dados são bastante difíceis de se obter. Você acaba na mão de bindings e o único disponível parece ser o LWJGL (o JOGL também, mas o projeto está num constante vai-e-vem). Ele também não suporta sobrecarga de operadores, o que deixa os códigos envolvendo vetores, matrizes e demais operações matemáticas bastante rebuscado.

Se você quiser uma plataforma mais adequada, com uma linguagem gerenciada, tente usar o C# com XNA.

De qualquer forma, se você for usar a LWJGL, vai gostar de ter em mãos um tutorial de opengl. Nesse caso, dê uma olhada nos artigos de OpenGL do ponto V, a partir desse:
http://pontov.com.br/site/opengl/154-a-maquina-de-estados-opengl

Os códigos estão em C++, mas não devem ser difíceis de adaptar (até pq a sintaxe da OpenGL é a mesma).

Olá, ViniGodoy!
Agradeço as dicas que me deu e irei dar uma olhada nos artigos de OpenGL do ponto V :slight_smile:
No começo, eu e meu grupo iríamos desenvolver o jogo em xna, mas precisamos desenvolvê-lo em uma linguagem livre e o xna é da Microsoft. Entre C, C++ e Java, optamos por Java. Mesmo assim, agradeço!

Seguindo o tutorial que vc me indicou, ocorreu outro erro:

Fri Jul 22 13:13:46 BRT 2011 INFO:Slick Build #274 Fri Jul 22 13:13:46 BRT 2011 INFO:LWJGL Version: 2.7.1 Fri Jul 22 13:13:46 BRT 2011 INFO:OriginalDisplayMode: 1024 x 768 x 32 @85Hz Fri Jul 22 13:13:46 BRT 2011 INFO:TargetDisplayMode: 800 x 600 x 0 @0Hz Fri Jul 22 13:13:46 BRT 2011 ERROR:Pixel format not accelerated org.lwjgl.LWJGLException: Pixel format not accelerated at org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(Native Method) at org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat(WindowsPeerInfo.java:52) at org.lwjgl.opengl.WindowsDisplay.createWindow(WindowsDisplay.java:185) at org.lwjgl.opengl.Display.createWindow(Display.java:317) at org.lwjgl.opengl.Display.create(Display.java:857) at org.lwjgl.opengl.Display.create(Display.java:785) at org.newdawn.slick.AppGameContainer.tryCreateDisplay(AppGameContainer.java:299) at org.newdawn.slick.AppGameContainer.access$000(AppGameContainer.java:34) at org.newdawn.slick.AppGameContainer$2.run(AppGameContainer.java:364) at java.security.AccessController.doPrivileged(Native Method) at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:345) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314) at Puzzle.main(Puzzle.java:42) Exception in thread "main" org.newdawn.slick.SlickException: Failed to initialise the LWJGL display at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:375) at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314) at Puzzle.main(Puzzle.java:42)

Acho que o principal deve estar aqui: Exception in thread “main” org.newdawn.slick.SlickException: Failed to initialise the LWJGL display

Já segui vários tutoriais, mas todos eles resultam em algum erro :?
Tenho mais uma dúvida: quando o tutorial diz que devo importar o arquivo lwjgl.jar, eu devo importar o arquivo .jar que está na pasta da biblioteca lwjgl que baixei, certo? Pq no arquivo que baixei da biblioteca Slick2D também tem um lwjgl.jar e um dos tutoriais indicava que pegasse esse arquivo. Vc sabe se faz diferença, se são iguais?

Desde já agradeço.

Provavelmente o que você baixou é mais novo. O ideal é usar o que vem com a Slick mesmo, pois deve ser uma versão já testada.
Você associou as dlls ao arquivo lwjgl.jar?

Ah ta. Vou usar o da Slick2D então. Obrigada!
Acho que não. Como faz isso, exatamente? Li sobre isso em alguns tutoriais, mas nenhum deles explicava como fazer!

  1. Entre em Build Path->Configure Build Path;
  2. Nas libs do seu projeto acha a lwjgl.jar;
  3. Clique no sinal de + ao lado do nome da lib para expandir a árvore;
  4. Clique no ramo "Native Library Location";
  5. Clique em edit;
  6. Coloque ali o caminho onde estão as .dlls da LWJGL;

Eu definitivamente não estou com sorte D:
Não sei o que está acontecendo! Eu concerto um erro e aparece outro :S
Associei as .dll ao arquivo lwjgl e agora apareceu isso:

Exception in thread "main" java.lang.NoSuchMethodError: getPointer at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Unknown Source) 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$1.run(Sys.java:75) at java.security.AccessController.doPrivileged(Native Method) at org.lwjgl.Sys.doLoadLibrary(Sys.java:68) at org.lwjgl.Sys.loadLibrary(Sys.java:84) at org.lwjgl.Sys.<clinit>(Sys.java:101) at org.lwjgl.opengl.Display.<clinit>(Display.java:128) at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39) at java.security.AccessController.doPrivileged(Native Method) at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36) at Puzzle.main(Puzzle.java:38)

Preciso muito conseguir fazer isso! Se alguém puder ajudar, agradeço!

Consegui concertar o erro! Finalmente \o/
Vou deixar a solução aqui para caso mais alguém precise:
Após seguir o tutorial indicado e as dicas, eu fui em Run -> Debug Configurations, Arguments, VM arguments e adicionei a seguinte linha: -Dorg.lwjgl.opengl.Display.allowSoftwareOpenGL=true
E funcionou!
Muito obrigada pela ajuda ViniGodoy!

:smiley: