2009-12-22 12 views
6

Ich möchte "Doppelklick" CLI-Anwendung machen, aber immer noch nicht wie. Ich weiß, ich sollte wahrscheinlich Manifest irgendwie bearbeiten, aber das ist alles. Ich googelte. aber kein Erfolg. Danke für irgendwelche Tipps. Hier ist die Ausgabe von Build, ausführen und manifestieren:So erstellen Sie ausführbare .jar-Datei mit Netbeans

compile: 
Created dir: /home/nick/NetBeansProjects/SemestralWork/dist 
Building jar: /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar 
Not copying the libraries. 
To run this application from the command line without Ant, try: 
java -jar "/home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar" 
jar: 
BUILD SUCCESSFUL (total time: 1 second) 


java -jar /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar 

Exception in thread "main" java.lang.NoClassDefFoundError: semestralwork/Main 
Caused by: java.lang.ClassNotFoundException: semestralwork.Main 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:319) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:264) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332) 
Could not find the main class: semestralwork.Main. Program will exit. 

MY MANIFEST created with build: 

Manifest-Version: 1.0 

Ant-Version: Apache Ant 1.7.1 

Created-By: 14.0-b08 (Sun Microsystems Inc.) 

Main-Class: semestralwork.Main 

Class-Path: 

X-COMMENT: Main-Class will be added automatically by build 

Antwort

0

Die Standardklasse Suchpfad das Problem sein kann. Sie sollten versuchen, das Verzeichnis an den Ort zu ändern, an dem sich das JAR befindet, und es mit java -jar Semestral.jar zu starten. Sie haben vielleicht auch die Hauptklasse falsch benannt. Bitte geben Sie auch Ihre Paketstruktur an.

0

Öffnen Sie die JAR-Datei mit einem ZIP-Tool (oder versuchen Sie less ..., wenn Sie unter Linux oder jar tvf ... sind). Stellen Sie sicher, dass dort ein Verzeichnis semestralwork ist, das eine Datei Main.class enthält.

+0

gibt es nur Methode namens "encryption.class", die ich von der Hauptmethode – landscape

+0

aufrufen Das ist Ihr Problem, dann. Der Klasse fehlt die JAR, weshalb Java sie nicht finden kann. –

1

Es ist einfacher, eine .exe von einem .jar ohne Netbeans zu machen. Hier sind meine Vorschläge: 1. Verwenden Sie eine spezielle Anwendung für diese (zB: JSmooth, JEXECreator etc) 2. Erstellen Sie eine C++ Programm, das eine JVM startet (siehe diese tutorial)

6

Diese beiden Zeilen sagen Ihnen alles, was Sie müssen wissen:

Exception in thread "main" java.lang.NoClassDefFoundError: semestralwork/Main 
Caused by: java.lang.ClassNotFoundException: semestralwork.Main 

Und ein weiterer Anhaltspunkt wird durch den offensichtlichen Ausgang fällt:

Main-Class: semestralwork.Main 

Dies bedeutet, dass die JAR-Datei für ein Paket suchtbenannt 10 und eine Klasse namens Main drin. Es schlägt an diesem Punkt fehl, da es das semestralwork-Paket oder die Main-Klasse nicht finden kann.

Wie Sie in Ihrer Frage hingewiesen haben, ist das Problem tatsächlich in der Manifestdatei. Sie können diese direkt in Ihrer JAR-Datei bearbeiten, wenn Sie mögen, aber eine bessere Idee wäre dies von Netbeans zu tun:

  • Klicken Sie auf `Datei -> Projekteigenschaften (semestralwork)‘
  • im Dialog das öffnet, auf den Baum auf der linken Seite Run
  • wählen Sie dann auf der rechten Seite, unter dem Main class:, geben Sie den vollständig qualifizierten Klassennamen der Klasse markierte Feld, das ausgeführt werden soll, wenn sie von der Befehlszeile ausführen.

In Ihrem Fall, wie ich aus Ihrem Kommentar zu @ Aaron Antwort zu sehen, wenn Ihre Hauptklasse in einer encryption.java genannten Datei ist, und es ist in dem Standard-Paket (kein Paket), geben Sie einfach encryption.

Sobald dies erledigt ist, machen Sie einen sauberen und bauen, dann versuchen Sie es erneut von der Kommandozeile aus.

HTH

4

Da ich das gleiche Problem gestoßen, kann ich die Lösung ein wenig klären.

Sie müssen eine Java-Hauptklasse außerhalb Ihrer Methode erstellen (z. B. default_package-Ordner) und dann Ihre Methode (Ordner) aufrufen, z. B. import your_folder.connected_class; in dieser Hauptklasse.

Hoffentlich konnte ich jemandem mit dem gleichen Problem helfen.

0

Es ist einfach. Laden Sie eine Kopie von Netbeans herunter. Mach ein neues Projekt in Netbeans. Gehe zu deiner Hauptklasse im Projektexplorer. Dies sollte der Ordner "YourProject" als Klasse YOURPROJECT.JAVA sein. Es ist diese Datei yourproject.java, mit der Sie beginnen möchten. Schreiben Sie Ihren Code einfach in den öffentlichen statischen void Hauptbereich. Sie können das Programm mit der grünen Wiedergabetaste in der oberen Symbolleiste ausführen.

Verwandte Themen