Hauptklasse wird nicht in JAR-Datei gefunden

Status
Nicht offen für weitere Antworten.

Ameisenmann

Mitglied
hi,
bevor mir hier gesagt wird, dass ich die suchfunktion oder ähnliches benutzen soll, seid euch sicher, dass ich dies zur genüge getan habe, jedoch ohne fruchtbares ergebnis...

folgendes habe ich getan:
ich habe 2 class-files, "bitrate.class" und "Stdin.class"....

ich habe eine textdatei namens "manifest.txt" erstellt (auch manifest.mf und nur manifest ausprobiert) und in diese folgendes reingeschrieben:


CLASS-PATH: .
MAIN-CLASS: bitrate



ich habe nach dem bitrate return gedrückt und auch in die nächste zeile ein leerzeichen gemacht, nix hat gefunzt, hab also alle variationen mal probiert...

dann habe ich in der eingabeaufforderung folgendes reingeschrieben:

jar cfvm test.jar manifest.txt *.*

das problem ist nun, dass JVM mir bei einem doppelklick der jar-datei folgendes sagt:

could not find the main class. program will exit

einmal hab ichs irgendwie hinbekommen, dass er mir ausgibt:
Fatal Exception occured. Program will exit.

aber nach nem neustart wars irgendwie wieder so, dass er die main class nicht findet...

wenn ich in der eingabeaufforderung folgendes eingebe, führt er das programm korrekt aus:
java -jar test.jar

demnach findet er doch die main-class oder?
wäre aber schön, wenn sich die jar per doppelklick ausführen lassen würde...
 
also ich hab jetzt in ordneroptionen für jar-files folgendes eingegeben:
C:\Programme\Java\j2re1.4.2_04\bin\javaw.exe -jar "%1" %*

jetzt bekomme ich beim doppelklicken immer die meldung:
Fatal Exception occured. Program will exit.

die manifest datei scheint nun zu funktionieren, aber wo liegt das problem???
 
Ameisenmann hat gesagt.:

CLASS-PATH: .
MAIN-CLASS: bitrate



ich habe nach dem bitrate return gedrückt und auch in die nächste zeile ein leerzeichen gemacht, nix hat gefunzt, hab also alle variationen mal probiert...

mach mal nach dem bitrate zwei enter.
 
hat auch nix gebracht...

also es handelt sich hierbei um einen bitrate calculator, der auf der eingabeaufforderung basiert...
dafür hab ich halt meine "bitrate.class" und ich habs jetzt noch mit einer anderen class datei probiert, "Kbd.class"...

in bitrate sind die rechenroutinen und die Kbd soll eine eingabe des benutzers ermöglichen, wobei er filmlänge und mp3bitrate wählen kann, der calculator ist für divx...

die Kbd hab ich von hier:
http://ada.rg16.asn-wien.ac.at/~javafs/jfc.html

wenn ich mit den beiden eine jar herstelle, passiert bei doppelklick nix und wenn ich
javaw test
in der eingabeaufforderung eingebe, sagt er, dass er die main class nicht findet =(

wie gesagt, mit
java -jar test.jar
lässt sich das programm normal auführen....
ich weiß echt nciht mehr weiter
 
Versuche es doch mal mit einem Tool. Zum Beispiel mit Jarkive oder einer IDE wie Eclipse oder JBuilder.
Normalerweise sollte eigentlich die jar-Datei-Erstellung so funktionieren, wie Du es gemacht hast.
Bist Du sicher, dass Du die Deklaration der Main-Klasse oder den Dateinamen der Main-Klasse nicht irgendwie noch mal verändert hast?
 
also mit Jarkive hatte ich das gleiche problem, vielleicht kann sich jemand mal die quelltexte in der rar anschauen, kann ja sein, dass ich was grundsätzliches falsch gemacht habe...
 
für alle die es interessiert:

ich habe nun in den ordneroptionen festgelegt, dass er jar-dateien mit java.exe statt javaw.exe öffnen soll und schon lässt sich das programm mit doppelklick ausführen....

ich weiß zwar nicht, wozu javaw gut ist, aber mit java geht es und mehr will ich im moment nicht...
 
Ameisenmann hat gesagt.:
für alle die es interessiert:

ich habe nun in den ordneroptionen festgelegt, dass er jar-dateien mit java.exe statt javaw.exe öffnen soll und schon lässt sich das programm mit doppelklick ausführen....

ich weiß zwar nicht, wozu javaw gut ist, aber mit java geht es und mehr will ich im moment nicht...

javaw ist dazu da, die konsole bei gui-programmen zu unterdrücken. java öffnet immer die konsole mit.
 
naja, da es sich um ein programm handelt, das nur auf der eingabeaufforderung basiert, ist die sache ja klar =)
 
Hallo,

ich beobachte ein ähnliches Verhalten.

Habe allerdings JRE 1.4 und JDK 1.5 installiert.
Beim Doppelklick wird 1.4 angezogen, welches bei mit 1.5 erzeugten Archiven mosert.

Code:
C:\Programme\jdk1.5.0\bin\javac.exe HelloWorldApp.java
C:\Programme\jdk1.5.0\bin\jar.exe -cfm HelloWorldApp.jar manifest.mf *.class

Funktioniert:
Code:
C:\Programme\jdk1.5.0\bin\java.exe -jar HelloWorldApp.jar

Funktioniert nicht:
Code:
"C:\Program Files\Java\j2re1.4.2_04\bin\java.exe" -jar HelloWorldApp.jar
java.exe -jar HelloWorldApp.jar

Beim letzten Aufruf wird die java.exe aus %windir%\System32 angezogen. Diese ist mit der vorher direkt angesprochenen 1.4er identisch.

Das Manifest-File sieht übrigens so aus:
Code:
Manifest-Version: 1.0
Class-Path: .
Main-Class: HelloWorldApp

Enrique
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben