3D Games und Animationen ohne Installation

Also ... einfach runterladen , entpacken und starten > der von Tim genannte Fehler.
Grund : du hast zwar schön die CLASS-Files mit geliefert und auch den richtigen CP angegeben, nur bringt das nichts wenn du die benötigten DDL / SO - Files nicht mit auslieferst. Diese müssten ebenfalls mit ins distribution-Pack.
 
Hi,

oh Gott, das ist genau was ich befürchtet hab, er braucht die DLL's.
(also native Bibliotheken)
Wohl diese: j3dcore-d3d.dll und villeicht sogar noch die: j3dcore-ogl.dll, j3dcore-ogl-chk.dll, j3dcore-ogl-cg.dll

Ich hab jetzt noch mal nen ZIP gepackt, diesmal mit allen 4 dll's im Ordner dist/lib/native, der in den Library-Path aufgenommen wird:
Code:
java -jar "3D Animation.jar" -Djava.library.path=lib\native

@Tim Bureck + genodeftest
Wäre nett wenn ihr es jetzt nochmal ausprobieren würdet.
(Bitte RUN.bat ausführen)

javaDeveloper2011
 

Anhänge

Hi,

@Tim Bureck:
wenn man sich Java3D als ZIP von hier lädt, sind auch nur die JAR's + DLL's enthalten die ich bei Post #12 im Anhang hab!
Für AMD-Prozessoren reicht aber offenbar schon j3dcore-ogl.dll.

javaDeveloper2011
 
Zuletzt bearbeitet:
@javaDeveloper2011:
Solange keine Bibliotheken für Unix/Linux dabei sind, brauch ich das nicht starten. Unter Linux haben die Bibliotheken meist die Dateiendung .so und beginnen häufig mit lib...

//EDIT:
du verlinkst auf die Seite mit den Downloads, da sind doch die ganzen Versionen für alle gängigen Betriebssysteme vorhanden.

// EDIT2:
Wenn du die Bibliotheken in den Ordner "native" packst, werden sie trotzdem nicht geladen (zumindest bei mir), es kommt ein UnsatisfiedLinkError
Code:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
	at java.lang.Runtime.loadLibrary0(Runtime.java:840)
	at java.lang.System.loadLibrary(System.java:1047)
	at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:200)
	at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:157)
	at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:987)
	at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:299)
	at animation.MyUniverseContent.main(MyUniverseContent.java:15)

Dieser lässt sich beheben, indem man das Jar-File mit
Code:
java -Djava.library.path=/pfad/zur/nativen/Bibliothek -jar ./3D\ Animation.jar
startet.

Das sieht im Moment so aus, als hättest du ein Problem mit dem Starter und dem Mitliefern der korrekten Biblotheken, willst das Programm aber über eine einzige Datei ausliefern. Nehm doch JNLP (Java Web Start), siehe http://www.java.com/en/download/faq/java_webstart.xml
Damit kannst du auch sicherstellen, dass nur die Daten für dein Programm geladen werden, die zur jeweiligen Plattform passen.
 
Zuletzt bearbeitet:
Hi,

java -Djava.library.path=/pfad/zur/nativen/Bibliothek -jar ./3D\ Animation.jar
hab ich mal in
Code:
java -Djava.library.path=lib/native -jar "3D Animation.jar"
abgeändert, dann lief es auch wunderbar.

Außerdem sind in diesem Zip auch noch libj3dcore-ogl.so und libj3dcore-ogl-cg.so im native-Ordner, also sollte es auch unter Linux (sofern du Intel hast) funktionieren, AMD konnte ich nicht auch noch mit reinpacken, weil die SO-Dateien gleich heißen und ich denke wenn ich die umbenenne werden sie wieder nicht gefunden.
(Das alles bei oneof6 so gut ging ist kein Zufall, denn Mac braucht wohl grundsätzlich nur die JAR's)

javaDeveloper2011
 

Anhänge

Nur um Missverständnisse zu vermeiden:
i586 ist eine 32Bit-Prozessorarchitektur, die seit 1993 auf Intel- und wenig später auch auf AMD-CPUs verbaut wird, siehe https://secure.wikimedia.org/wikipedia/en/wiki/I586
amd64 ist eine 64Bit-Prozessorarchitektur, die seit 2000 auf AMD-CPUs und wenig später unter dem Namen x86-64 auf Intel-CPUs verbaut wird, siehe https://secure.wikimedia.org/wikipedia/en/wiki/X86-64
amd64 setzt auf i586 auf, 32Bit-Betriebssysteme auf diesen Prozessoren nutzen i586, 64Bit-Betriebssysteme nutzen amd64 und i586. Auch wenn die Namen das andeuten, sind beide Architekturen jeweils auf allen handelsüblichen Intel- und AMD-CPUs verbaut.

// EDIT:
Zu dem Code-Block mit den Parametern für java: Das war nun mal in meinem Fall so, weil ich dein Programm in /opt/dist/... liegen habe.

Dein Code läuft leider noch nicht, Fehlermeldung diesmal:
Code:
java -Djava.library.path=./lib/native -jar "3D Animation.jar"
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/dist/lib/native/libj3dcore-ogl.so: /opt/dist/lib/native/libj3dcore-ogl.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675)
	at java.lang.Runtime.loadLibrary0(Runtime.java:840)
	at java.lang.System.loadLibrary(System.java:1047)
	at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:189)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:180)
	at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:137)
	at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:948)
	at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:280)
	at animation.MyUniverseContent.main(MyUniverseContent.java:15)

Grund ist: wrong ELF class: ELFCLASS32
ELF ist eine Abkürzung für das Format der ausführbaren Dateien/Bibliotheken (auf Unix-basierten Systemen), vergleichbar mit DLL (Windoof). Dein Programm versucht, die Bibliothek für 32Bit-Systeme (also i586-Architektur) zu starten, aber ich habe ein 64Bit-Betriebssystem.
Wenn ich die 64Bit-Bibliothek von Java3D herunterlade und in /dist/lib/native kopiere (die 32Bit-Bibliothek ersetze), dann startet dein Programm wie gewünscht.
 
Zuletzt bearbeitet:
Hi,

OK, sehr interessant, mit Hardware kenne ich mich hald echt nicht so gut aus, aber funktioniert mein Programm jetzt auch, bzw. hast du Linux mit 32 Bit?

Gruß
 
OK, Post #19 war dann wohl überflüssig und ich werde meine Programme mit Java3D immer für alle OS und jeweils 32 + 64 Bit-Variante anbieten.
Jetzt gehe ich einfach mal davon aus, dass es auch auf Windows geht, wenn jemand trotzdem nochmal testen würde wäre toll.

Vielen Dank, ohne dich hätte ich es echt aufgeben müssen,
javaDeveloper2011
 
Zurück