Java3D einbinden

Alles was NetBeans erweitert

Moderator: wegus

Spacedone
Beiträge: 7
Registriert: 05.02.2012, 14:25

Java3D einbinden

Beitragvon Spacedone » 05.02.2012, 14:35

Hallo,

ich verzweifle Momentan an dem Einbinden der j3d Komponenten.
Um ein Applet auf einer Website zu erstellen muss ich ja sowohl die JAR, als auch die DLL Dateien in mein Projekt einbinden und mit dem Applet "ausliefern".
Die Jar Dateien einzubinden ist auch kein Problem, wie bekomme ich aber die DLL Dateien zu den Library Dateien dazu, damit sie auch in der Java.class.path auftauchen?

Ich habe die J3D Api nicht über Netbeans herunter geladen, sondern extra von der J3D Api Seite, da ich ganz allgemein wissen will wie man Libraries ( incl. DLL ) in Java Projekte einbindet.

Ich benutze die NetBeans IDE 7.1 mit dem JDK 1.6.0U30..

Grüße,
Spacedone

Benutzeravatar
FreakyNerd
Beiträge: 7
Registriert: 24.05.2011, 10:00

Re: Java3D einbinden

Beitragvon FreakyNerd » 06.02.2012, 08:00

Guten Morgen!

Oh ja, ich kenne das Problem! Zwar nicht mit Java3D, aber mit Java OpenGL > gleiches Problem.
Zum Glück weiß ich inzwischen, wie es geht ;)

Schau mal nach, wo dein JDK auf deinem PC installiert ist. Das müsste standardmäßig sowas wie C:\Programme\Java\jdk1.6.0.. sein. Du kannst das auch ganz einfach nachschauen per Rechtsklick auf dein

Netbeans-Projekt > Properties > Libraries > Manage Java Platforms..

Da kannst du aussuchen, welche der installierten JDKs du benutzen möchtest, falls du
mehrere hast, und sehen/angeben, wo sie sich befinden.
Wenn du nun das Verzeichnis ausfindig gemacht hast musst du nur noch deine DLLs in das Verzeichnis

jdk1.6.0_..\jre\bin

kopieren!

Ich hoffe mal das funktioniert für dein Java3D-Applet genauso wie für meine OpenGL-Anwendungen.
Falls es nicht klappt kannste ja mal bescheid sagen und auch angeben, wie genau du deine JARs einbindest, vielleicht liegt das Problem auch da.

Gruß,
Olli

Spacedone
Beiträge: 7
Registriert: 05.02.2012, 14:25

Re: Java3D einbinden

Beitragvon Spacedone » 06.02.2012, 09:39

Vielen Dank für die Antwort!

Ich will das Programm allerdings nicht nur auf meinem Computer ausführen können sondern das Programm online stellen, sodass es auch jemand ausführen kann der die Biblitohek nicht installiert hat.
Darum will ich die DLL irgendwie in das Projekt einbinden.. Netbeans setzt den "Library.path" ja auf die Bibliotheken und das Programm findet die JAR Datein meiner integrierten Bibliothek auch, nur die DLL kann ich nicht einbinden. Zumindestens nicht in der Art, dass sie auf dem Library Path liegen und die JAR Datei sie finden..

Grüße,
Rouven

Benutzeravatar
FreakyNerd
Beiträge: 7
Registriert: 24.05.2011, 10:00

Re: Java3D einbinden

Beitragvon FreakyNerd » 07.02.2012, 14:49

Auf welche Weise soll das Programm denn online zur Verfügung gestellt werden? Also was sind die genauen Schritte, die zwischen der Erstellung und der Distribution des Programmes geschehen sollen?

Spacedone
Beiträge: 7
Registriert: 05.02.2012, 14:25

Re: Java3D einbinden

Beitragvon Spacedone » 07.02.2012, 14:54

Ich weiß nicht genau was du mit der Frage meinst ..

Ich will das Applet in eine Website einbinden. Das Programm schreiben, mit der 3D Library als Jar verpacken und auf einer Website veröffentlichen..

Grüße

Benutzeravatar
FreakyNerd
Beiträge: 7
Registriert: 24.05.2011, 10:00

Re: Java3D einbinden

Beitragvon FreakyNerd » 07.02.2012, 15:36

Okay, das "als Jar verpacken" wollte ich wissen ;). Habe in dem Bereich leider noch keine Erfahrung, da ich bisher nur Desktop-3D-Anwendungen geschrieben habe, keine Applets.

Spacedone
Beiträge: 7
Registriert: 05.02.2012, 14:25

Re: Java3D einbinden

Beitragvon Spacedone » 07.02.2012, 15:40

Ach so :D

Aber bei Applikationen musst du dich auch die j3d Library mit "ausliefern" oder?
Wie hast du die denn dort mit verpackt ?

Benutzeravatar
FreakyNerd
Beiträge: 7
Registriert: 24.05.2011, 10:00

Re: Java3D einbinden

Beitragvon FreakyNerd » 08.02.2012, 07:26

Bei normalen Java-Applikationen in NetBeans muss man lediglich einen "Build" auf das Projekt machen, dann wird das Programm im "dist"-Ordner des Projektes automatisch als Jar verpackt, die nötigen DLLs werden ebenfalls in den "dist"-Ordner kopiert und die nötigen Jars werden unter dist\lib\ abgelegt, sodass die Jar direkt ausführbar ist.
Denke das Einbinden in die Jar selbst ist nicht möglich (oder recht kompliziert), stattdessen musst du irgendwie innerhalb deiner Internet-Anwendung auf die DLLs verweisen, daher meine Frage, wie genau die Internet-Veröffentlichung stattfindet. Rein theoretisch müsste es ja klappen, wenn du von deiner Internetseite (oder von wo aus auch immer die Jar gestartet werden soll) auf einen Online-Space verweist, wo sich die Jar deines Programmes mitsamt der DLLs befindet.
Irgendwie machbar?

Spacedone
Beiträge: 7
Registriert: 05.02.2012, 14:25

Re: Java3D einbinden

Beitragvon Spacedone » 08.02.2012, 12:53

Das heißt du hast eine Library erstellt und sie mit den JARs und den DLLs verlinkt ?

Wie gebe ich das am besten an ? Die DLLs müssen ja auf dem Class-Path liegen .. Muss ich die DLLs im Manifest mit angeben - als Pfad zu den einzelnden DLLs oder zum Ordner ? Oder kann ich auch beim <object>, bzw <applet>, "Archive" Attribut auf die DLLs verweisen ?

Ich hab es eigentlich schon probiert und die JARs haben die DLLs nicht gefunden, aber vlt habe ich einen Fehler gemacht dann guck ich nochmal..

Grüße

Benutzeravatar
FreakyNerd
Beiträge: 7
Registriert: 24.05.2011, 10:00

Re: Java3D einbinden

Beitragvon FreakyNerd » 08.02.2012, 14:33

Eine ganze Weile Herumexperimentieren hat ergeben, dass tatsächlich keinerlei "Verlinkung" zwischen Jar und dlls notwendig ist. Man muss die dlls lediglich auf gleicher Verzeichnisebene mit der Programm-Jar haben und die Bibliotheken-Jars müssen in einem lib-Ordner liegen, siehe hier:

jogl_dist_ordner.png
Ordner Struktur der Distribution von Programmen, die DLLs brauchen
jogl_dist_ordner.png (3.83 KiB) 10532 mal betrachtet


"JOGLLibraryTest.jar" ist die Jar-Datei, die beim Build-Vorgang von NetBeans erstellt wurde.
"gluegen-rt.jar" und "jogl.jar" sind die Jar-Bibliotheken, die von dem Programm verwendet werden.

NetBeans macht auch den Class-Path-Eintrag zu den Jar-Bibliotheken in der Manifest-Datei automatisch:

manifest.png
manifest.png (9.37 KiB) 10531 mal betrachtet


FreakyNerd hat geschrieben:Rein theoretisch müsste es ja klappen, wenn du von deiner Internetseite (oder von wo aus auch immer die Jar gestartet werden soll) auf einen Online-Space verweist, wo sich die Jar deines Programmes mitsamt der DLLs befindet.
Irgendwie machbar?
;)

Spacedone
Beiträge: 7
Registriert: 05.02.2012, 14:25

Re: Java3D einbinden

Beitragvon Spacedone » 10.02.2012, 13:59

Vielen Dank für die Mühe!

Erstmal: benötigt die j3d Api auch die JOGL Bilbiotheken ? Ich benutze nur die Grund j3d Librarys ( "vecmath.jar", "j3dcore.jar", "j3dutils.jar" ) und die entsprechenden j3dcore dlls.. Im Anhang ist die Struktur.

Führe ich die Hauptklasse in von start.jar aus beschwert er sich immernoch dass die dll "j3dcore-ogl-chk.dll" nicht auf dem Classpath liegen würde..

Hier ist das ganze Hochgeladen : http://newstart.cwsurf.de/loadClass/

Funktioniert also leider nicht ..
Ich habe auch probiert die DLLS in ein bin Ordner zu tun und das ganze im Manifest als Class-Path anzugeben..
Also als "Class-Path: lib/j3dcore.jar ... bin/j3dcore-ogl-chk.dll ..."
( Den Bin Ordner habe ich natürlich in den "dist" Ordner mit hochgeladen.

Hat leider ebenfalls nicht funktioniert.. die VM will die Dateien partout nicht finden ..

Grüße
Dateianhänge
Bildschirmfoto 2012-02-10 um 14.42.17.png
Projektstrutkur
Bildschirmfoto 2012-02-10 um 14.42.17.png (15.52 KiB) 10500 mal betrachtet

Benutzeravatar
FreakyNerd
Beiträge: 7
Registriert: 24.05.2011, 10:00

Re: Java3D einbinden

Beitragvon FreakyNerd » 13.02.2012, 09:18

Nein, Java3D benötigt die JOGL-Jars nicht, da Java3D ja eine eigene Implementierung von OpenGL darstellt.

Hmm, du scheinst ja tatsächlich alles richtig zu machen. Funktioniert die start.jar denn, wenn du sie lokal auf deinem Rechner ausführst? Oder nur nicht, wenn du die veröffentlichte Datei ausführst?

Spacedone
Beiträge: 7
Registriert: 05.02.2012, 14:25

Re: Java3D einbinden

Beitragvon Spacedone » 13.02.2012, 16:21

Gut.. Wollt nur sichergehen mit JOGL..

Lokal funktioniert alles.. Ob von Netbeans aus oder im Browser. Allerdings habe ich hier auch die J3D Api in meiner JRE drin.
Das Projekt funktioniert lediglich nicht wenn ich es unter Windows von meiner zweiten Partition ausführe..


Zurück zu „NetBeans - Modules / Plugins“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste