# LWJGL-Problem



## Seikuassi (28. Apr 2014)

Hallo,

puh, mein erster Beitrag im Java-Forum.
Zu meiner Person: Ich habe zuerst selten BASIC programmiert, danach Assembler für Mikrocontroller (Atmel AVR), über C++-Programmierung für Windows zu schließlich Java, da die Syntax zu C++ "ähnlich" ist und ich vor allen Dingen plattformunabhängig programmieren möchte.
Angefangen habe ich mit Java erst seit kurzem. Ich habe mit einfachen Fenster mit JFrame, Swing bzw. Graphics2D rumprobiert und würde sagen, dass ich die Grundlagen zu Java eigentlich verstanden habe.
Verwenden tue ich das JDK von Oracle (so wie die meisten hier wahrscheinlich).

Jetzt möchte ich mich aber mal mit 3D-Programmierung auseinandersetzen. Anfangen würde ich gerne mit LWJGL. Doch schon am Anfang habe ich (wahrscheinlich) mit den natives o.ä. erste Probleme.

Ich verwende folgende Ordnerstruktur und Codes:

*Ordnerstruktur*



Test 
 -MANIFEST.mf 
 -start.bat 
 -Test.java 
 -Test.jar 
 -libraries 
 --native 
 ---freebsd 
 ----(leer) 
 ---Linux 
 ----libjinput-linux.so 
 ----libjinput-linux64.so 
 ----liblwjgl.so 
 ----liblwjgl64.so 
 ----libopenal.so 
 ----libopenal64.so 
 ---macosx 
 ----libjinput-osx.jnilib 
 ----liblwjgl.jnilib 
 ----openal.dylib 
 ---solaris 
 ----liblwjgl.so 
 ----liblwjgl64.so 
 ----libopenal.so 
 ----libopenal64.so 
 ---windows 
 ----jinput-dx8.dll 
 ----jinput-dx8_64.dll 
 ----jinput-raw.dll 
 ----jinput-raw_64.dll 
 ----lwjgl.dll 
 ----lwjgl64.dll 
 ----OpenAL32.dll 
 ----OpenAL64.dll 
 --AppleJavaExtensions.jar 
 --asm-debug-all.jar 
 --jinput.jar 
 --lwjgl-debug.jar 
 --lwjgl.jar 
 --lwjgl_test.jar 
 --lwjgl_util.jar 
 --lwjgl_util_applet.jar 
 --lzma.jar 
 -resources 
 --(leer)
*Test.java*

```
package classes; 
   
 import java.io.*; 
 import java.util.Properties; 
 import org.lwjgl.opengl.Display; 
 import org.lwjgl.opengl.DisplayMode; 
   
// --- Klassen --- // 
class Game_Window{ 
     // --- Methoden --- // 
     private void draw(){ 
         return; 
     }; 
     public void start(int height,int width){ 
         try{ 
             Display.setDisplayMode(new DisplayMode(height,width)); 
             Display.create(); 
         }catch(Exception e){ 
             System.exit(1); 
         }; 
         init(); 
         while((Display.isCloseRequested()==false)){ 
             draw(); 
             Display.update(); 
         }; 
         Display.destroy(); 
     }; 
     public void init(){ 
         return; 
     }; 
     // --- Variablen --- // 
     
     // --- Aufzählungen --- // 
     
}; 
class Test{ 
     // --- Methoden --- // 
     public static void main(String[]arg){ 
         Game_Window gW=new Game_Window(); 
         gW.start(800,600); 
         return; 
     }; 
     // --- Variablen --- // 
     
     // --- Aufzählungen --- // 
     
};
```
*MANIFEST.mf*

```
Manifest-Version: 1.0 
 Created-By: PHBU 
 Main-Class: classes.Test 
 Class-Path: .;libraries\*
```
*compile.bat*

```
cmd /c echo --- temporaeres Verzeichnis erstellen --- 
 cmd /c md "$(CURRENT_DIRECTORY)\classes" 
 cmd /c echo. 
 cmd /c echo --- .java-Datei(en) kompilieren --- 
 javac -cp .;libraries\* -d classes\ *.java 
 cmd /c echo. 
 cmd /c echo --- .class-Datei(en) packen --- 
 jar -0cfmv $(NAME_PART).jar MANIFEST.mf resources -C classes\ . 
 cmd /c echo. 
 cmd /c echo --- temporaeres Verzeichnis löschen --- 
cmd /c rd "$(CURRENT_DIRECTORY)\classes" /S /Q
```
Rückgabe von compile.bat

```
--- temporaeres Verzeichnis erstellen --- 


 --- .java-Datei(en) kompilieren --- 


 --- .class-Datei(en) packen --- 
 Manifest wurde hinzugef³gt 
 resources/ wird hinzugef³gt(ein = 0) (aus = 0)(0 % gespeichert) 
 classes/ wird hinzugef³gt(ein = 0) (aus = 0)(0 % gespeichert) 
 classes/Game_Window.class wird hinzugef³gt(ein = 793) (aus = 793)(0 % gespeichert) 
 classes/Test.class wird hinzugef³gt(ein = 343) (aus = 343)(0 % gespeichert) 

--- temporaeres Verzeichnis löschen ---
```
*start.bat*

```
@echo off 
 java -cp .;.\libraries\* -jar Test.jar -Djava.path.library=.\libraries\native\windows 
 echo. 
 echo. 
 echo. 
 echo Programm beendet. Druecken Sie eine beliebige Taste, um das Programm zu beenden. 
 pause>NUL 
 exit
```
Folgenden Fehlercode erhalte ich beim Ausführen von start.bat:

```
Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/opengl/DisplayMode 
 at classes.Game_Window.start(Test.java:16) 
 at classes.Test.main(Test.java:40) 
 Caused by: java.lang.ClassNotFoundException: org.lwjgl.opengl.DisplayMode 
 at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
 at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
 at java.security.AccessController.doPrivileged(Native Method) 
 at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
 at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
 at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
 ... 2 more 



 Programm beendet. Druecken Sie eine beliebige Taste, um das Programm zu beenden.
```

Frage an euch: Wo liegt der Fehler? 

MfG

Seikuassi


----------



## eMmiE (29. Apr 2014)

Wo hast du denn deine ganzen Java-Klassen reingepackt, die von den verschiedenen APIs vorgegeben werden?

Bei mir ist das so, dass ich im JDK Ordner verschiedene Unterordner habe, die die Klassen beinhalten.

```
C:\Programme(x86)\Java\jdk1.7.0_17\src.zip\...
```
Guck da mal nach ob im Verzeichnis 
	
	
	
	





```
jdk...\src.zip\org\lwjgl\opengl
```
 die Java-Datei DisplayMode.java enthalten ist.

Es sieht ja so aus, als ob er die nicht findet.
Das kann aber auch daran liegen, dass du sie nicht richtig importet hast.
Ich schätze bei einem von den beiden hängt das Problem

Gruß eMmiE


----------



## player337 (29. Apr 2014)

Willst du nicht Eclipse oder NetBeans verwenden?
Die würden die ganze Ordnerstruktur selber machen.


----------

