• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

Probleme mit Jar Dateien

Kobra331

Diablo-Veteran
Registriert
29 April 2007
Beiträge
1.490
Hallo :)

Ich habe mir ein kleines Programm geschrieben das ich als jar. Datei weitergeben moechte.
Das Problem ist nur das er bei mir die jar. Datei nicht oeffnet.
Als Progsoftware hab ich BlueJ benutzt dort funzt das Programm ohne Probleme, er benoetigt ein Unterprogramm Namens RLA um bestimmte Variablen einlesen zu koennen das ist natuerlich mit in dem Projekt drin.
Wenn ich auf die erstellte jar. Datei klicke passiert nichts.
Hab im Internet Recherchiert dort steht das es an der Fehlenden Benutzeroberflaeche liegt, in dem Fall muss man das in der Komandozeile oeffnen aber dann sagt er mir: unable to acces jarfile..

muss ich noch etwas besonderes beachten?
Mache das zum ersten mal (also jar. files erstellen) und habe k a wo der Fehler liegt.

Mfg

Kobra331
 
Es gibt für das Problem mindestens drei Ursachen:

1. Der Rechner auf dem die Applikation ausgeführt werden soll hat kein Java installiert. Die Lösung wäre dann offensichtlich.

2. Die Dateiverknüpfung ist nicht korrekt eingerichtet, so dass ein Doppelklick nicht funktioniert. Für solche Fälle verwende ich immer triviale Batch/Shellscript-Dateien, die per Hand das Programm starten.
Unter Windows-Batch reicht ein

java -j MeineJar.jar

zum Starten. Bei Linux-Shells kommt noch der SheBang davor.
Dieser Ansatz ist auch praktisch um Parameter der VM zu ändern. Beim simplen Doppelklick stehen sonst nur 64MB Speicher zur Verfügung und das wird schnell mal eng, wenn das Programm was nichttriviales macht.

Z.B. gibt es mit

java -Xmx512MB -j MeineJar.jar

512MB Speicher.


3. Die Jar-Datei enthält kein oder ein fehlerhaftes Manifest. Wenn ja, dann lies in der Java-Literatur nach, wie die aussehen muss. Ist etwas zu kompliziert, dies hier zu erklären und eigentlich gehört es zu den Funktionen einer Entwicklungsumgebung die zu generieren.
 
zu 1.
Java ist natuerlich installiert (JDK) sonst haett ich es ja garnicht programmieren koennen..

2.
java -j MeineJar.jar <---- Den befehl hab ich in die Kommandozeile eingegeben da kam: unable to acces jarfile.

3.
wird es wahrscheinlich sein...
vllt muss ich irgendwo im programmcode noch ein befehl einbauen das das ganze laeuft.
 
Mea culpa,

ich sollte besser lesen, bevor ich Antworten schreibe.

Also im Programmcode musst du definitiv nichts ändern, allenfalls im Build-script falls du soetwas verwendest.

er benoetigt ein Unterprogramm Namens RLA um bestimmte Variablen einlesen zu koennen das ist natuerlich mit in dem Projekt drin.

Wenn ich dich jetzt korrekt verstehe, dann hast du dein eigenes Programm und diese RLA Bibliothek.
Ist die Bibliothek eine eigene jar-Datei?
Wenn ja, musst du dafür sorgen, dass die VM weiß, wo sie die Bibliothek finden kann. Dies erledigt der Classpath. Am elegantesten und einfachsten packt man diesen mit ins Manifest der Haupt-jar Datei. Die Pfade müssen dabei natürlich stimmen

Alternativ kannst du auch die Class-Dateien aus der Bibliothek direkt in dein jar kopieren (lassen) und sparst die das Problem des Classpaths. Für die einfachen jar-Generatoren in Entwicklungsumgebungen ist dies meist aber entweder eine elende Arbeit, oder es geht gar nicht. Mit einem kurzem Ant-Script ist es aber schnell automatisiert.
 
Ich hab keine Ahnung was ein Build Script ist :D ich denke dann verwende ich soetwas auch nicht^^

Die RLA Datei ist ein von mir in den Projektordner eingefuegtes Programm das jemand anderes aus unserer Schule geschrieben hat. mit dem Befehl: Variable=RLA.readInt() befielt man dem Programm fuer einen eine Variable einzulesen in dem Fall ebend einen Integer.

ich habe oben bei BlueJ einfach auf file---> Create jar. file geklickt die Main datei angegeben und dann hat er mir die datei erstellt die nicht funzt..
Ich habe nur 1 Projektordner in dem alles was zum laufen des programms noetig ist wenn das als Bibliothek gemeint ist.
Weitere Jar files habe ich noch nicht weil das bis jetzt noch absolutes neuland fuer mich ist ^^
 
Versuch mal Whiskey in .jar Datein einzufügen. Hat bei mir immer geholfen.
 
?

ist das jetzt ernst gemeint oder werd ich grad verkohlt?
 
Warum sollte ich dich verkohlen? :confused:

Kannst ja das hier mal anschauen, dann sollte alles klar werden. Klick mich
 
Ich habe gerade einen Blick in die BlueJ-Doku geworfen und muss sagen, dass die Beschriebung zur Kommandozeile gefährlich fahrlässig definiert ist.

Als du auf der Kommandozeile die Aufruf per Hand vorgenommen hast, war das Arbeitsverzeichnis auch der Ordner, in der die Jar-Datei auch liegt?
Wenn nein, dann ist der Fehler völlig klar und ganz simpel zu lösen.

Entweder du wechselst der Hand vorher in den richtigen Ordern, also in etwa (unter Windows)

cd c:\MeineDaten\MeinProject\
java -jar meineJar.jar

Oder du verwendest immer den absoluten Pfad in der Kommadozeile

java -jar c:\MeineDaten\MeinProject\meineJar.jar
 
JAAAA \o/

vielen dank Santa's Tipp hats gebracht \o/




nein Quatsch ;) danke an Hasentod meine Komandozeile war im falschen Ordner ich hatte die Datei aufm Dektop gespeichert und musste ihn erstmal dazu hinfuehren :rolleyes:

wie gesagt das ist (noch) absolut neu fuer mich, aber ich erinnere mich das ich aehnliches mal mit titanseals ias calc hatte.

Danke sehr dann kann ich endlich losprogrammieren und andere an meinen Programmen teilhaben lassen :)
 
Zuletzt bearbeitet:
Zurück
Oben