6 Stimmen

Wie man eine exe-Datei in Java erstellt

Hallo, ich möchte eine Exe-Datei für meine Java-App erstellen.

Ich habe versucht, mit einigen Drittanbieter-Softwares JEXECreator, erfolgreich erstellt die exe-Datei und seine Arbeit gut in meinem System, wenn ich mit einem anderen Computer versucht, es ist nicht funktioniert. Ich bekam die folgende Fehlermeldung

    * The error occurred while running the application. The exit code is 0x10000223.
    * Contact the vendor of the application for troubleshooting.

    java.lang.ClassNotFoundException: com.sample.SampleMain
         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)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at com.ucware.JEXEClassLoader.run(Unknown Source)
         at com.ucware.JEXEClassLoader.main(Unknown Source)
    **************************************

Ich weiß, dass mit dem Klassenpfad, den ich festgelegt habe, etwas nicht stimmt.

Eigentlich möchte ich die Exe-Datei selbst erstellen, ohne eine Software eines Drittanbieters zu verwenden.

Ich habe die Schritte auf vielen Websites gefunden

Erstellen der Manifestdatei mit dem Namen Sample.mft mit folgendem Inhalt

         Manifest-Version: 1.0
         Main-Class: 
         Class-path:

Daran habe ich einige Zweifel,

  1. Wie die Main-Class hinzugefügt werden soll, mit dem vollständigen Paketnamen (com.sample.SampleMain) oder dem Klassennamen allein (SampleMain) oder mit der Erweiterung (SampleMain.class)

  2. Wie der Klassenpfad hinzugefügt werden sollte, habe ich 4 Java-Klassen und 2 Jars in meinem Projekt. Wie füge ich all diese in den Klassenpfad ein, und muss ich das Java JDK im Klassenpfad hinzufügen?

  3. Wo die Manifestdatei gespeichert werden soll

  4. Welche Dateierweiterung sollte das Manifest haben (mf oder mft)?

  5. In der Eingabeaufforderung, aus welchem Verzeichnis ich die exe-Datei erstellen sollte (aus meinem Projektordner oder src-Ordner oder dem Ordner, der alle Java-Klassen enthält)

  6. Welche Syntax sollte beim Erstellen von jar in der Eingabeaufforderung verwendet werden?

(jar cmf Sample.mf Sample.jar Sample1.class Sample2.class Sample3.class Sample4.class jar1.jar jar2.jar) wie hier oder (jar cvfm Sample.jar sample.mf *.class)

Wenn ich so etwas getan habe, erhalte ich eine Jar- statt einer Exe-Datei. Wenn ich die Jar-Datei in der Eingabeaufforderung mit "java -jar sample.jar" ausführe, erhalte ich die Ausnahme "Klasse nicht gefunden".

Eigentlich, wie eine exe-Datei anstelle von jar-Datei zu erstellen, das heißt, nur durch einen Doppelklick auf die exe-Datei, sollte meine App in jeder Maschine laufen.

Kann mir jemand helfen, dies zu tun?

Vielen Dank im Voraus.

3voto

eee Punkte 1053

Ich benutze das Ant-Tool unter Eclipse IDE, um mit InnoSetup und Launch4J zu arbeiten, um die EXE und den Installer zu erstellen, der auch den Klassenpfad verwaltet...

Ein Führer? Sie können nachlesen:

http://www.eteks.com/tips/tipCreationExe.html (auf Französisch)

1voto

Matthew Phillips Punkte 1208

Ich kann nicht für JEXECreator sprechen, aber ich kann JSmooth empfehlen ( http://jsmooth.sourceforge.net/ ). Ich habe es erfolgreich für mehrere Projekte eingesetzt (z.B. diese SWT-basierte Java-Anwendung ).

1voto

Martijn Courteaux Punkte 65602

Ich persönlich mag JSmooth . Das ist nur ein Wrapping. Das bedeutet, dass es sich immer noch um eine Java-Anwendung handelt. Beim Ausführen der Exe wird die Jar-Datei in einen temporären Ordner entpackt und dann mit javaw -jar ...

Eine zweite Möglichkeit ist gcj . Aber das ist absolut eine schlechte Wahl. Dadurch wird das Jar nicht in eine Exe verpackt, sondern wirklich zu nativem Systemcode kompiliert. Aber das verlangsamt Ihre Anwendung sehr viel. Sie können einige Ergebnisse meiner Zeitmessung auf dieses Thema .

1voto

xor_eq Punkte 3613

Ich hatte einige positive Erfahrungen mit Excelsior JET . Im Gegensatz zu gcj funktioniert es tatsächlich und die Ausführungszeiten sind schneller als die einer ausgeführten .jar-Datei. Der Nachteil ist, dass es nicht umsonst ist.

0voto

Rupeshit Punkte 1460

Nun, ich werde Ihnen empfehlen, eine Bash-Datei zu erstellen, anstatt komplexe Dinge zu tun und durch einen Doppelklick auf sie können Sie Ihre application.Yeah ausführen, aber Sie können nicht ändern, sein Symbol, aber es gibt viele kostenlose Tools zur Verfügung stehen, mit denen Sie leicht konvertieren Bash-Datei in exe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X