Peter S.
17-11-2004, 07:50
Hallo Leute,
ich hab ein kurioses Problem. Ich möchte aus einer Datei "xxx.class" eine "xxx.jar" erzeugen, die sodann die Klassendatei und das Manifest enthält. Aus dem "xxx.jar"-File möchte ich sodann ein EXE-File mit "Xenoage JStart" erzeugen.
Folgendes Beispiel - einfaches Fenster:
public class y {
private org.eclipse.swt.widgets.Shell sShell = null;
public y() {
super();
}
public static void main(String[] args) {
System.setProperty("java.library.path", "C:\\programme\\java\\eclipse\\plugins\\org.eclipse .swt.win32_3.0.1\\os\\win32\\x86");
org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
y thisClass = new y();
thisClass.createSShell() ;
thisClass.sShell.open();
while (!thisClass.sShell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep ();
}
display.dispose();
}
private void createSShell() {
sShell = new org.eclipse.swt.widgets.Shell();
sShell.setSize(new org.eclipse.swt.graphics.Point(300,200));
sShell.setText("Shell");
}
}
Auch ohne Festlegung der Systemeigenschaft (Arguments->VM Arguments in Eclipse) für den SWT Klassenpfad (Djava.library.path="C:\programme\java\eclipse\plugins\org.eclipse.swt. win32_3.0.1\os\win32\x86") funktioniert das Ganze, wenn für die Ausführung die Klassendatei verwendet wird.
java -classpath .;%classpath%;C:\java\x\y.jar -Djava.library.path="C:\Programme\Java\eclipse\plugins\org.eclipse.swt. win32_3.0.1\os\win32\x86" y -> funktioniert!!!!!!
Wenn ich nun ein "jar-File" erzeuge, so erhält die darin enthaltene Manifestdatei folgenden Eintrag:
Manifest-Version: 1.0
Main-Class: y
Nachstehender Aufruf erzeugt jedoch ein Fehler:
java -classpath .;%classpath%;C:\java\x\y.jar -Djava.library.path="C:\Programme\Java\eclipse\plugins\org.eclipse.swt. win32_3.0.1\os\win32\x86" -jar y.jar -> Error: Exception in thread “main” java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Display at y.main(y.java:34)
Warum findet "java" die “org/eclipse/swt/widgets/Display”-Klasse bei einem direkten Aufruf der Projektklassendatei, jedoch bei einem Aufruf der daraus erzeugten "jar"-Datei nicht???
Für jeden Hinweise vielen Dank im Voraus
Peter
ich hab ein kurioses Problem. Ich möchte aus einer Datei "xxx.class" eine "xxx.jar" erzeugen, die sodann die Klassendatei und das Manifest enthält. Aus dem "xxx.jar"-File möchte ich sodann ein EXE-File mit "Xenoage JStart" erzeugen.
Folgendes Beispiel - einfaches Fenster:
public class y {
private org.eclipse.swt.widgets.Shell sShell = null;
public y() {
super();
}
public static void main(String[] args) {
System.setProperty("java.library.path", "C:\\programme\\java\\eclipse\\plugins\\org.eclipse .swt.win32_3.0.1\\os\\win32\\x86");
org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
y thisClass = new y();
thisClass.createSShell() ;
thisClass.sShell.open();
while (!thisClass.sShell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep ();
}
display.dispose();
}
private void createSShell() {
sShell = new org.eclipse.swt.widgets.Shell();
sShell.setSize(new org.eclipse.swt.graphics.Point(300,200));
sShell.setText("Shell");
}
}
Auch ohne Festlegung der Systemeigenschaft (Arguments->VM Arguments in Eclipse) für den SWT Klassenpfad (Djava.library.path="C:\programme\java\eclipse\plugins\org.eclipse.swt. win32_3.0.1\os\win32\x86") funktioniert das Ganze, wenn für die Ausführung die Klassendatei verwendet wird.
java -classpath .;%classpath%;C:\java\x\y.jar -Djava.library.path="C:\Programme\Java\eclipse\plugins\org.eclipse.swt. win32_3.0.1\os\win32\x86" y -> funktioniert!!!!!!
Wenn ich nun ein "jar-File" erzeuge, so erhält die darin enthaltene Manifestdatei folgenden Eintrag:
Manifest-Version: 1.0
Main-Class: y
Nachstehender Aufruf erzeugt jedoch ein Fehler:
java -classpath .;%classpath%;C:\java\x\y.jar -Djava.library.path="C:\Programme\Java\eclipse\plugins\org.eclipse.swt. win32_3.0.1\os\win32\x86" -jar y.jar -> Error: Exception in thread “main” java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Display at y.main(y.java:34)
Warum findet "java" die “org/eclipse/swt/widgets/Display”-Klasse bei einem direkten Aufruf der Projektklassendatei, jedoch bei einem Aufruf der daraus erzeugten "jar"-Datei nicht???
Für jeden Hinweise vielen Dank im Voraus
Peter