Hi,
ich bin Java-Neuling und habe ein kleines Problem. Ich habe etwas kleines mit Eclipse programmiert.
Hab das ganze mal zum testen gekürzt auf folgendes :
Code:
package filesystem;
public class csvconverter {
/**
* @param args
*/
public csvconverter () {
}
public static void main(String[] args) {
//reader leser = new reader () ;
//System.out.println( leser.leseDatei( "C:\\test.txt" ) ) ;
System.out.print("TEST") ;
}
}
Beim Aufruf druch den Runbutton in Eclipse funtzt auch alles einwandfrei. Nur möchte ich das ganze jetzt so compilieren, dass es auch auf anderen PC ausführbar ist. Wie mache ich das in Eclipse ?
compiliert ist es schon (sonst könnte es eclipse auch nicht ausführen).
2 Möglichkeiten:
1.) Du gehst in deinem FileSystem deines Betriebssystems (bei Windows z. B. mit dem Explorer) in deinen Workspace und kopierst dir da die .class Dateien mitsamt packages raus
2.) Du packst alles in eine JAR (Rechte Maustaste auf Projekt => Exportieren => JAR => Anweisungen folgen)
Hi,
danke erstmal für die Hilfe.
Nun habe ich alles als Jar-Archiv exportieren lassen. Auf 2 Rechnern kriege ich jetzt aber immer die Fehlermeldung :
Exception in thread "main" java.lang.NoClassDefFoundError:
also doppelklick in windows auf ne jar, geht im peinzip davon aus das ne GUI existiert, bzw wird das ganze da normalerweise, ausser man aendert das, mittels javaw.exe" -jar "%1" %* gestartet. gut möglich das der Fehler daher kommt
Man könnte aber auch n zusätzlichen eintrag im kontextmenü für jar-files erzeugen, der dann auf konsole lenkt
Hi,
JRe habe ich neun isntalliert, ohne erfolg.
Werde dann erstmal so weiter programmieren und mich später auf die GUI stürzen.
Erstmal danke an euch !
also doppelklick in windows auf ne jar, geht im peinzip davon aus das ne GUI existiert, bzw wird das ganze da normalerweise, ausser man aendert das, mittels javaw.exe" -jar "%1" %* gestartet. gut möglich das der Fehler daher kommt
Man könnte aber auch n zusätzlichen eintrag im kontextmenü für jar-files erzeugen, der dann auf konsole lenkt
das ist die komplette fehlermeldung. die "..." sind nur der dateipfad (war zu faul ihn auszuschreiben) und zum manifest ??? keine ahnung was das sein soll, dachte ich müsste unter eclipse nur exportieren in jar und gut ist. wo finde ich die datei???
Wenn du in der Konsole ausführst, dann sollte da noch mehr stehen (kannst auch aus der konsole kopieren oder nen screenshot machen). Die Manifest-Datei spezifiziert welche Datei letztendlich ausgeführt werden muss. Hierzu kannst du mal in die FAQ schauen.
Poste doch mal dein Manifest (JAR entpacken, und MANIFEST.MF mit einem Texteidtor öffnen und hier posten).
du musst aus der Konsole auch (wie schon auf der vorhergehenden Seite beschrieben) dein Programm wie folgt aufrufen
Code:
java -jar DeinJar.jar
tja, dann fehlt wohl die main-Klasse in deinem Manifest. Die musst du festlegen (entweder bei der Export in Eclipse im Dialog "JAR Manifest Specification", oder wenn eben manuel => siehe FAQ).
C:\Dokumente und Einstellungen\tja>java -jar "C:\Dokumente und Einstellungen\tja
\Desktop\ID.jar"
Exception in thread "main" java.lang.NoClassDefFoundError: Read/java
hab jetzt nochmal in *.class geändert aber immer nocht
C:\Dokumente und Einstellungen\tja>java -jar "C:\Dokumente und Einstellungen\tja
\Desktop\ID.jar"
Exception in thread "main" java.lang.NoClassDefFoundError: Read/class
zum thema nochmal habe es jetzt mal mit fatjar ausprobiert, da ich nachdem ich mich im tut schlau gemacht habe, herausfand, dass ich auch noch 2 andere "Pojekte" einbinden muss ... bekomme jetzt wieder ne fehlermeldung, wenn ich versuche die jar
auszuführen hier der fehler:
C:\Dokumente und Einstellungen\tja>java -jar "C:\Dokumente und Einstellungen\tja
\Desktop\++ID_fat.jar"
Exception in thread "main" java.lang.UnsupportedClassVersionError: Read (Unsuppo
rted major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Also zu deinem 1. Problem (ohne FatJAR ): Wenn du ein Manifest erstellst, wird bei der Definition der main-Klasse die Main-Klasse auch einfach nur MainKlasse genannt (ohne das Suffix .class). Ein Punkt wird wie ein Ordnerverzeichnis interpretiert, für den Fall, dass du packages verwendest.
Mit FatJAR kenne ich mich nicht aus und halte ich auch nicht so viel von, aber die Fehlermeldung deutet darauf hin, dass du mit einer höheren Version compiliert hast, als JRE auf deinem Rechner ist. Mach mal Rechte Maustaste auf dein Projekt => Properties => Java Compiler und schau dir dort das Compiler compliance level an. Anschließend gehst du in die Konsole und gibst dort "java -version" ein. Jetzt vergleichst du die beiden Ausgaben. "java -version" darf nicht kleiner sein, als das Compiler-Level in Eclipse.