# Game mit  LWJGL/JOGL in executable JAR packen, wie?



## Friedhelm (28. Aug 2010)

So, ich wollte jetzt mein Game mal in ein JAR packen lassen (von Eclipse => Export), nur kann er wohl die Librarys nicht finden, da er den lib Ordner nicht mit kopiert wo LWJGL und JOGL2 drin liegen. Menuelles reinkopieren in die JAR-Datei hat nichts gebracht.

Kann mir einer eine kurze Anleitung geben wie ich das alles in ein ausführbares JAR bekomme?

Achso, ich packe die OpenGL Libs immer in den Projektordner, weil ich die Libs nicht global auf den Rechner erreichbar haben möchte, um zu sehen ob es auch ohne funktioniert. Denn wenn ich das Game weitergebe... dann hat jemand anderes sicherlich kein extra LWJGL oder JOGL installiert und per Konsole den CLasspath gesetzt . Das Game soll einfach die Libs aus dem JAR nehmen.

Wäre nett wenn mir da jemand behilflich sein könnte.


Beim ausführen der executable JAR kommt das:


```
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]	Exception in thread "main" java.lang.UnsatisfiedLinkError: no nativewindow_jvm in java.library.path
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1754)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at java.lang.Runtime.loadLibrary0(Runtime.java:823)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at java.lang.System.loadLibrary(System.java:1045)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at com.sun.nativewindow.impl.NativeLibLoaderBase.loadLibraryInternal(NativeLibLoaderBase.java:199)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at com.sun.nativewindow.impl.NativeLibLoaderBase.access$000(NativeLibLoaderBase.java:50)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at com.sun.nativewindow.impl.NativeLibLoaderBase$DefaultAction.loadLibrary(NativeLibLoaderBase.java:88)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at com.sun.nativewindow.impl.NativeLibLoaderBase.loadLibrary(NativeLibLoaderBase.java:126)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at com.sun.nativewindow.impl.NativeLibLoaderBase$1.run(NativeLibLoaderBase.java:133)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at java.security.AccessController.doPrivileged(Native Method)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at com.sun.nativewindow.impl.NativeLibLoaderBase.loadNativeWindow(NativeLibLoaderBase.java:131)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at com.sun.nativewindow.impl.jvm.JVMUtil.<clinit>(JVMUtil.java:53)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:625)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at javax.media.opengl.awt.GLCanvas.<clinit>(GLCanvas.java:78)
28.08.10 03:26:14	[0x0-0x3bc3bc].com.apple.JarLauncher[3482]		at
```


----------



## XHelp (28. Aug 2010)

Vllt hilft dir http://www.java-forum.org/spiele-mu...gl-mehr-nur-canvas-texturpool.html#post660711 weiter


----------



## Friedhelm (28. Aug 2010)

Teilweise. Ich bin jetzt auf LWJGL umgestiegen. Damit funktionierts. 


Bei JOGL2 bekomme ich einen in der executable JAR den Fehler:

Nicht abgefangene Ausnahme in main-Methode:
java.lang.NoSuchMethodError:
com.sun.gluegen.runtime.BufferFactory.nativeOrder
(Ljava/nio/ByteBuffer Ljava/nio/ByteBuffer;

-beenden-

Keine Ahnung was das bei JOGL2 soll. Hat einer einen Tip?


----------



## Guest2 (28. Aug 2010)

Friedhelm hat gesagt.:


> Bei JOGL2 bekomme ich einen in der executable JAR den Fehler:
> 
> Nicht abgefangene Ausnahme in main-Methode:
> java.lang.NoSuchMethodError:
> ...



Aus dem von XHelp verlinktem Thread:



Guest2 hat gesagt.:


> Anschließend musst Du noch ein paar Importanweisungen korrigieren, da Buffers, Animator und FPSAnimator nun in anderen Paketen liegen (com.jogamp...).



Dein source code und die gluegen und/oder jogl Versionen passen nicht zueinander.

Gruß,
Fancy


----------



## Friedhelm (28. Aug 2010)

> Dein source code und die gluegen und/oder jogl Versionen passen nicht zueinander.
> 
> Gruß,
> Fancy



Hmmm... aber unter Eclipse funktionierts mit den selben Files. Ausser das ich da noch die ganzen Files von LWJGL drin habe.


----------



## Guest2 (28. Aug 2010)

Also in den halbwegs aktuellen Versionen von jogl2 gibt es keine com.sun Klassen mehr. Es kann natürlich sein das Du eine ältere Version von jogl2 nutzt. Nur, entweder die Klasse ist nicht da, weil sie nicht ins jar gepackt wurde oder es wurden die falschen Versionen zusammengepackt.

(Da kommen vermutlich noch ne ganze Reihe von Problemen ehe das läuft. Wundert mich, dass das mit lwjgl so einfach geklappt hat. Hast Du das mal auf einem anderen Rechner gestartet? (Einem der noch nie was mit lwjgl zu tun hatte?))

Gruß,
Fancy


----------



## Friedhelm (28. Aug 2010)

Guest2 hat gesagt.:


> Wundert mich, dass das mit lwjgl so einfach geklappt hat. Hast Du das mal auf einem anderen Rechner gestartet? (Einem der noch nie was mit lwjgl zu tun hatte?))
> 
> Gruß,
> Fancy



Ja, heute habe ich das mal bei meiner Schwester probiert (LWJGL Version). Lief einwandfrei.

Naja das mit com.sun ist wohl weil ich JOGL und LWJGL in ein JAR packe, ob ich nun JOGL2 verwende oder LWJGL. Viellicht liegts daran.


----------

