Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
JAR-Datei mit Eclipse einschließlich SWT erstellen
ich hab ungefähr 1 std lang beiträge gelesen zum thema aber : bin nach wie vor nicht klar gekommen. Hab auch verschiedenen sachen ausprobiert die ich da gelesen hab.
Ich verwende Eclipse 3.0.0 und hab da per Export ein JAR Archiv erstellt.
Da drin sind jetzt :
META-INF\MANIFEST.MF
Inhalt der Manifest.MF :
(ja mit Leerzeile)
test\HelloWorld.class
test\HelloWorld.java
Inhalt von HelloWorld.java
Code:
package test;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
public class HelloWorld {
public static void main(String[] args) {
Display display1 = new Display () ;
Shell shell1 = new Shell (display1) ;
Label label1 = new Label (shell1 , SWT.CENTER) ;
label1.setText("Hello World") ;
label1.setBounds(shell1.getClientArea());
shell1.open() ;
while (!shell1.isDisposed ()) {
if (!display1.readAndDispatch ()) display1.sleep ();
}
display1.dispose ();
}
}
Ganz simple sache also.
Wenn ich das dopplklicke kommt das allseits beliebte "could not find main class. will exit"
Run ging in eclipse ohne probleme. Fenster ist erschienen und so.
Wieso is es eigentlich so unheimlich schwierig ne ausführbare datei mit java zu erstellen ? Da scheinen ja ziemliche viele Leute probleme zu haben und ich hab mich da jetz auch seit 2 std bemüht das hinzubekommen. Gibs da nich n tool oder so das das richtig kann ? hehe
Vielleicht liegt der Fehler auch woanders , ich hab meine test.jar mal mit java.exe -jar test.jar aufgerufen , antwort :
C:\Programme\j2sdk1.4.2_05\bin>java -jar test.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
du verwendest eine Klasse die sich nicht in deinem CLASSPATH befindet !
Also musst du das jar file oder was auch immer in dem diese Klassen zu finden sind in deinen CLASSPATH aufnehmen
Sorry du ich bin noch hardcore java noob. Kannst du das kurz ausführen ? Ich weiss nichma was Classpath bedeutet hehe also wo genau ich das eintragen soll. In eine Datei oder ?
Kann es sein, das du die Pakete wie org.eclipse.swt.SWT, usw. nicht mit in die Jar Datei reingemacht hast?
Soll heißen einfach den org Ordner mit in die Jar Datei hinein machen.
Ne hab ich nich mit reingemacht. Ich ging mal davon aus das Eclipse mir die nötigen sachen mit reintut aber wer weiss was ich da falsch gemacht hab. Welche sachen muss ich denn da alles mit reintun ?
Nur diesen ordner hier ( ich arbeite mit windows xp ) :
org.eclipse.swt.win32_3.0.0 ? Hab ich jetz einfach mal mit reingepackt aber kommt nach wie vor die selbe meldung das die Main Methode nicht gefunden wird .. Muss ich den an eine bestimmt stelle tun ? hab ihn jetzt einfach in den root meiner jar rein ..
Du hast ja sicherlich nen Ordner, in dem Dein jar liegt. Erzeuge da mal nen Unterordner lib, in den Du das jar "org.eclipse.swt" rein kopierst. Nun noch in der MANIFEST.MF die Zeile "Class-Path: lib/org.eclipse.swt" rein und es sollte gehen. Kannst auch mal die Leerzeile mit rausnehmen.
Hast Du jetzt in Deiner MANIFEST.MF "Class-Path: lib/org.eclipse.swt.win32_3.0.0" oder "Class-Path: lib/org.eclipse.swt" stehen? Du musst die erst Variante (Class-Path: lib/org.eclipse.swt.win32_3.0.0) nehmen.
Jup hab ich beides mal ausprobiert weil ich mir nicht 100% sicher war wie du es meintest ... ob es jetzt geht oder nicht kansnt du dir vermutlich denken
nope es geht nicht ... ich programmier in anderen sprachen seit mehreren jahren und mein gefühl sagt mir der fehler liegt woanders aber wenn du noch mehr vermutungen hast worans liegen könnte nur raus damit
Ich hatte die sache mit den jar files mitlerweile erstmal aufgegeben und mich auch erstmal wieder von eclipse getrennt und dieser eigenwilligen swt angelegenheit ... hab gelesen mal muss zich andere jar dateien von eclipse mit den in den classpath packen damit da irgendwie mal n schuh draus wird und das überhaupt ausserhalb von eclipse läuft .. da beschäftige ich mich lieber richtig mit swing und hab dann n programm was auch läuft
swt is ja nur son vereinfachtes swing und noch irgendwas mix dings bums wenn ich das richtig verstanden hab ..
ich hab das gleich gemacht, und bin ein bisschen weiter, habe jetzt allerdings auch ein problem.
und zwar will ich natürlich das ich ein jar (+ die nötigen libs und jars) verschicken können und der empfänger soll es mit java -jar Foo.jar ausführen können. Ich habs soweit gecheckt das mein swt programm Zugriff auf die Klassen im swt.jar haben muss, und das es Zugriff auf swt runtime libraries braucht. Es gibt viele Möglichkeiten dies zu erledigen. Ich will also die Möglichkeit in der ich alles in mein JAR rein- bzw. dazupacke damit der Empfäner es so einfach wie möglich hat.
SWT.jar:
das swt.jar kopiere ich in das Verzeichnis aus dem das .jar ausgeführt werden soll und gebe im manifest folgendes an:
wenn die .so (swt runtime library unter linux) files im selben verzeichnis liegen wie das .jar liegen.
ich will aber das jar nicht mit diesem langen, langen Pfad aufrufen. Gibt es noch eine Möglichkeit dem jar mitzuteilen das die swt runtime libs einfach im selben Verzeichnis liegen ?? In dem Tutorial klingt es so, als würde es funktionen wenn es im selben Verzeichnis liegt, auch ohne Pfadangabe.