2016-06-24 6 views
1

Also, wenn ich meine Java-Datei schreiben:
Was ist der richtige Einstiegspunkt beim Kompilieren von Java zu jar?

public class Program 
{ 
public static void main(String[] args) 
{ 
System.out.println("Serious business logic."); 
} 
} 

Dann in windows cmd, kompilieren ich auf diese Weise:

javac Program.java 
jar cfe Program.jar Program Program.class 
java -jar Program.jar 

Es ist in Ordnung, und das Ergebnis ist:

"Serious business logic."

Wenn in Netbeans ich ein Projekt erstellen, fügt es diese Zeile hinzu:

package program; 

Und ich kann nicht in cmd kompilieren, nur innerhalb der IDE. Ich habe versucht, manifest.txt, UTF8-Codierung ohne BOM, plus linebreak in der und der Datei.

manifest.txt:

Main-Class: program.Program 
  • "jar CVFM Program.jar manifest.txt Program.class"

und ohne manifest.txt, nur in cmd program.Program

  • "jar cfe Programm.jar programm.Programm Programm.class"
  • zu laufen

    Als ich versuchte:

    java -jar Program.jar 
    

    es ergibt sich:

    "Error: Could not find or load main class program.Program"

    Ich habe bereits die folgenden Websites geprüft:
    http://www.skylit.com/javamethods/faqs/createjar.html
    https://docs.oracle.com/javase/tutorial/deployment/jar/build.html
    und nicht haben irgendeine Idee, wie man es macht. Kannst du mir bitte Helfen?
    Wie kompiliere ich mit Paketschlüsselwort? Was ist der richtige Einstiegspunkt?

    Danke!

    (ps jre1.8.0_91;? Jdk1.8.0_66 sollte ich gleiche 32 oder 64 Bit für beide jre und jdk)

    Antwort

    1

    Vergewissern Sie sich, wenn Sie Ihr Programm als JAR kompilieren, ist Program.class innen eines Ordners namens program. Das Paketschlüsselwort, das Netbeans am Anfang des Skripts hinzugefügt hat, teilt der ausführbaren Datei mit, dass es sich in einem Ordner namens program befindet. Wenn Sie nur die Klassendatei hinzufügen, ohne sicherzustellen, dass sie sich im richtigen Paket (Ordner) befindet, wird sie nicht ordnungsgemäß ausgeführt, da sie nicht weiß, wo sie zu finden ist. Ihr Befehl sollte geändert werden:

    jar cvfm Program.jar Manifest.txt program 
    

    wo program ist ein Ordner mit Program.class. Ihr Manifest wird möglicherweise in Ruhe gelassen, muss aber auch in die Kompilierung einbezogen werden.

    +0

    Ja. Jetzt verstehe ich. Es klappt. 1000 * Danke! –

    +0

    Gern geschehen :) – Confiqure