Probleme mit JAR - "Could not find main class"

vanToom

Grünschnabel
Hallo Leute!

Ich hab folgendes Problem:
Ich hab mir eine kleine Applikation geschrieben, (die GUI enthält SWT) und diese möchte ich nun per JAR-File einfach, ohne Entwicklungsumgebung aufrufen können.

Hab mir mit Hilfe von Eclipse 3.0 M8 ein JAR-File erstellt und dort auch die Main.Klasse angegeben.

Beim Aufrufen des Files erhalte ich immer folgenden Fehler:
"Could not find main class"

Obwohl diese definitiv darin enthalten ist.

Mein erster Gedanke war, dass das ganze mit dem SWT Zeugs zusammenhängt. (den bei einem Projekt ohne SWT hat das schon mal geklappt)

Kann mir bitte jemand weiterhelfen. vielen DANK
 
Hallo!

Hast du zufällig alle Klassen in einem Package liegen?
wenn die main-Klasse beispielsweise im Package "runtime" liegt
muss der Eintrag in der Manifest.mf auch
runtime.MainKlasse
lauten ...

Gruß Tom
 
Hallo!

Ich hab die Klassen in verschiedene Packages aufgeteilt. Meine Klasse RunApp liegt im Package "run"
im Manifest steht dann: "Main-Class: run.RunApp"
Das sollte eigentlich hinhauen, da das ganze ja von Eclipse erstellt wurde.

Kann es sein, dass das ganze mit SWT zusammenhängt. Um SWT in einer Applikation ausführen zu können ist ja, soviel ich weiß, eine .dll Datei notwendig.
Kann es sein, dass diese .dll dem JAR-File nicht genügt, oder ich noch was anderes einbinden muss?

danke
VT
 
Hallo!

Wenn du die SWT Libs extern verwenden willst muss zum einen das swtXXXXX.jar
im Classpath liegen und zum anderen musst du die DLL entweder
nach
%JAVA_HOME%/jre/lib/i386
oder
%JAVA_HOME%/bin
(Je nachdem wie du deinen Path gesetzt hast)

in die Systemvariable LD-LIBRARY_PATH oder
beim Aufruf von java als paramter

java -cp %CLASSPATH% -Djava.library.path=c:\pfad\zu\dll runtime.MeineMainKlasse

Gruß Tom
 
Original geschrieben von Thomas Darimont
Hallo!

Wenn du die SWT Libs extern verwenden willst muss zum einen das swtXXXXX.jar
im Classpath liegen und zum anderen musst du die DLL entweder
nach
%JAVA_HOME%/jre/lib/i386
oder
%JAVA_HOME%/bin
(Je nachdem wie du deinen Path gesetzt hast)

in die Systemvariable LD-LIBRARY_PATH oder
beim Aufruf von java als paramter

java -cp %CLASSPATH% -Djava.library.path=c:\pfad\zu\dll runtime.MeineMainKlasse

Gruß Tom

Unter Eclipse lässt sich dieser Parameter -Djava.library.path=c:\pfad\zu\dll runtime.MeineMainKlasse unter VM Optionen in der Run Configuration angeben.

grüsse
 
Hallo Nochmal!

Ich komm leider auf keinen grünen Zweig. Irgendwie will das ganze nicht funktionieren.

Also nochmal: Ich hab eine Applikation und die GUI besteht aus SWT. Aus dieser Applikation möchte ich nun ein jar generieren, dass ich per Doppelklick öffnen kann. er findet aber die main.class nicht. Das Problem liegt anscheinend am SWT bzw. swt.jar.

Ich schaff es einfach nicht, dieses jar in mein tool einzubinden.

Kann mir bitte wer nochmal helfen.
Sollte das Ding heute abliefern

vielen Dank

grüsse
VT
 
Hallo!

Hast du im Manifest.mf nach dem Eintrag

Main-Class: run.RunApp

EINMAL (!) Enter gedrückt? -> Notwendig!
Das solltest du jedoch mit nem "richtigen" TextEditor machen ... auf keinen Fall mit Notepad. Der verwendet nämlich die Sequenz \r\n als NewLine, das Jar-Manifest verlangt jedoch \n als NewLine Symbol.

Gruß Tom
 
Würd auch gern die SWT Libraries extern einbinden. Gibt es auch die Möglichkeit die swt.jar und die dll direkt ins gleiche Verzeichnis wie die Jar zu packen und dann die jar mit den entsprechenden Parametern zu öffnen?

hab folgendes versucht, funktioniert aber nicht:

java -cp \swt.jar -Djava.library.path=\swt-win32-3123.dll -jar PicSim.jar

in Manifest steht folgendes:
Manifest-Version: 1.0
Main-Class: picsim.PicSim
 
Probieren führt halt doch manchmal zum Erfolg ;)

mußte folgendes in die Manifest Datei hinzufügen:
Class-Path: swt.jar

und die swt.jar und die dll müssen halt im selben Verzeichnis sein.

Aufruf dann nur: java -jar PicSim.jar
 
Zurück