Wie lauffähige .jar-Datei mit Netbeans für Java3D Anwendung erstellen?

Stefan1971HH

Mitglied
Hi,

wenn ich in Netbeans mit "Clean and build" eine .jar-Datei erstellen lasse, ist diese nicht lauffähig
(es tut sich nichts, kein Programmstart, keine Fehlermeldung). Allerdings ist im dist-Ordner ein lib-
Unterordner, der j3dcore.jar, j3dutils.jar und vecmath.jar (und einige Dateien mehr) enthält.
Wenn aus Netbeans gestartet, läuft die Anwendung einwandfrei. Hab im Netz viele Berichte über
dasselbe Probleme gefunden, aber keine bei mir funktionierende Lösung....es wurde z.B. empfohlen,
j3dcore.jar, j3dutils.jar und vecmath.jar explizit unter den Projekteigenschaften hinzuzufügen- hat nicht geholfen. Weiss jemand Rat? Es ist ziemlich wichtig (Abgabe Bachelorarbeit)
 
Kannst du davon ausgehen (oder wenn nicht, dann in der Doku einfach voraussetzen) dass Java3D auf dem Zielrechner installiert ist? Das wäre wohl das einfachste, zu Java3D gehören nämlich auch noch ein paar DLLs, die in der JAR natürlich nicht drin sind...
 
Vermutlich ist dort Java3D installiert, aber mit der erstellten jar-Datei würde der Zielrechner
wohl auch nicht mehr anzufangen wissen als meiner. Ich hätte gern eine einzelne, unabhängig
lauffähige Datei. Notfalls kan ich den ganzen Profilordner brennen und dazuschreiben, dass es aus NetBeans gestartet werden soll, fände ich aber unschön.

P.S.: Frohes neues Jahr!
 
Wenn du sagst es "tut sich nix", dann bezieht sich das wohl auf einen Doppelklick auf die Datei? Kannst du das mal an der Konsole mit
java -jar DasProgramm.jar
starten, und schauen, ob da was ausgegeben wird?
 
über die Windows-Eingabeaufforderung erscheint folgendes:
(besagt auch, dass die Bibliotheken nicht gefunden wurden,
was vermutlich beim Doppelklick auch das Problem ist)

PHP:
J:\Bachelorarbeit\NetBeansProjects_ongoing\BA Lerntool\dist>java -jar BA_Lerntoo
l.jar
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no j3dcor
e-ogl 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 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 gui.MainDisplayUI.<init>(MainDisplayUI.java:26)
        at gui.MainDisplayUI$36.run(MainDisplayUI.java:1792)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$200(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
 
Zuletzt bearbeitet:
Genau, das wollte ich erreichen 😉 Du hast jetzt die Java3D-JARs mit in deine JAR gepackt? Wenn ja, lass sie mal weg. Eigentlich sollte er bei der Installation von Java3D alles so einrichten, dass sie gefunden werden.

Wenn es dann immernoch nicht geht: Gib' mal das verzeichnis, wo die Java3D-DLLs drinliegen (Programme\Java3D\bin oder so) als
java -jar -Djava.library.path="..." DasProgramm.jar
an.

(Ggf. auch eine Kombination aus beidem ... 😳 )
 
Hmnaja... Wenn das für die Abgabe erstmal reicht, ist das ja soweit OK. Das als eine one-fits-all-JAR zusammenzupacken wird eben schwierig, weil Java3D installiert sein muss (ggf. mit auf die CD packen). Eine Patentlösung wüßte ich nicht, müßte auch rumprobieren, ob man irgendein Konglomerat aus JARs und DLLs findet, das sich einfach so starten läßt...
 
In NetBeans kannst du (dank Java 7) auch direkt für die Plattform kompilieren, also eine .EXE bauen, die dann alle Elemente des Programms enthält.

Nur musst du folgendes bei beachten:
Wenn du auf Windows programmierst (solltest du mal wechseln), kannst du dein Programm in dem Fall nicht auf Linux oder Mac OS laufen lassen. Dann müsstest du entweder:
  1. Dir Linux installieren und jemanden mit einem Mac finden
    oder
  2. Jemandem mit Linux und jemandem mit einem Mac finden

damit du dein Programm auch tatsächlich auf jede Plattform bringen kannst.
 

Zurück
Oben