JAR-main Klasse nicht gefunden problem

Habe ich zum erstellen einer JAR-Datei (ohne IDE)

Das ist, was ich Tue:

Bekam ich einen Ordner mit dem Namen Projekt-das ist das wichtigste, in diesem habe ich zwei Ordner und eine pdf-Datei.

namens ClassFiles enthält alle ".class" - Dateien meines Projekts

dem anderen benannt JavaFiles enthält alle ".java" - Dateien.

die Datei ist eine Beziehung, die ich zu umfassen, nichts von Bedeutung, auch wenn, und nennt sich Info.pdf.

Den Fehler den ich habe ist dieser:

Meiner main-Klasse (redundant ist, ich meine den Start, mit "public static void main(String[] args)") genannt wird Main

die Befehlszeile, die ich verwende, ist:

jar -cfe Project.jar ClassFiles.Main JavaFiles ClassFiles INFO.pdf

bekomme ich die Fehlermeldung Could not find the main class: ClassFiles.Main. Program will exit

PS: in der ClassFiles Ordner habe ich eine Menge classname$1, classname$2 Dateien. ich weiß nicht, ob es relevant ist. Ich habe sogar den Main mit und eine Main$1.

Ich muss zu geben das JAR morgen, also ich bin ziemlich verzweifelt.

Vielen Dank im Voraus!

Exception in thread "main" java.lang.NoClassDefFoundError: ClassFiles/Main (wrong name: Main)

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: ClassFiles.Main. Program will exit

@erikson:
ClassFiles ist nur ein Ordner das ich die alles enthalten .Klasse, nichts mehr... es ist kein Paket, was ich auch Tat (es war der Standard, wenn ich verwendet, Eclipse)

@ Dave Newton: sorry Mann, (erstmal danke), konnte u ein wenig genauer? ich bin nicht zu verstehen, was ich tun sollte. ich bin nicht wirklich gut mit diesem Zeug

ah, wenn du meinst, dass das Paket nicht als Projekt, sondern Progetto nur, weil ich übersetzte es auf Englisch. nicht sicher, ob das, was Sie sich beziehen auch.

Habe ich die Main.class in den ClassFiles Verzeichnis und Main.java in den JavaFiles dir

Das ist genau das, was ich getan habe und das Ergebnis:

ascal@AscaL ~/Desktop/Project $ jar cfe Progetto.jar ClassFiles.Haupt-ClassFiles JavaFiles Info.pdf

ascal@AscaL ~/Desktop/Project $ java-jar Progetto.jar

Exception in thread "main" java.lang.NoClassDefFoundError: ClassFiles/Main (wrong name: Main)
bei java.lang.ClassLoader.defineClass1(Native-Methode)
bei java.lang.ClassLoader.defineClass(ClassLoader.java:634)
bei java.Sicherheit.SecureClassLoader.defineClass(SecureClassLoader.java:142)
bei java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
bei java.net.URLClassLoader.access$000(URLClassLoader.java:73)
bei java.net.URLClassLoader$1.run(URLClassLoader.java:212)
bei java.Sicherheit.AccessController.doPrivileged(Native Method)
bei java.net.URLClassLoader.findClass(URLClassLoader.java:205)
bei java.lang.ClassLoader.loadClass(ClassLoader.java:321)
bei der sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
bei java.lang.ClassLoader.loadClass(ClassLoader.java:266)

Nicht finden konnte, die main-Klasse: ClassFiles.Main. Programm wird beendet.

//Code von Main.java

http://pastebin.com/Xh9emcYH

  • Hat Ihr Main Klasse deklarieren sich in der ClassFiles Paket? I. e., erste Zeile von code sollte package ClassFiles; (Gut, eigentlich sollten Sie wählen eine legitime package-Namen, und erstellen Sie das entsprechende Verzeichnis-Struktur, aber lassen Sie uns tun, eine Sache zu einer Zeit.)
  • Als ich sagte in meiner Antwort, und erickson sagt hier, dein Paket ist falsch (wie in deiner ursprünglichen Frage--Sie erhalten nicht die Fehlermeldung beim ausführen der jar-KSE). Wenn du gehst, um welches Paket es bis in die ClassFiles-Verzeichnis, sollte es in den ClassFiles Paket.
  • Tun, was @erickson sagte und legte package ClassFiles; an der Spitze der Main Klasse.
  • Nein, ich meine "setzen package ClassFiles; an der Spitze der Main Klasse". (Obwohl auch als @erickson sagte, dass ist nicht sehr standard-Paket name, aber ein Schritt zu einer Zeit.)
  • Sie sind mit einem Paket, die Sie einfach nicht verstehen. Wenn Sie angeben, dass der Eintrag-Punkt (-e Möglichkeit jar) als ClassFiles.Main Sie sagen, dass die Klasse Main ist in der ClassFiles Paket. Und die entsprechende .class-Datei muss in einem Ordner mit dem Namen ClassFiles. Und alle anderen Klassen, die am Ende in das Verzeichnis mit Main sollte erklären, die ClassFiles Paket zu.
  • nur um klar sein, Sie bedeuten, an der Spitze der Main.class oder der Main.java Datei?
  • Die Java-Datei. Es wäre... unklug, Bearbeiten Sie die class-Datei als text.
  • ich bearbeitete es immer noch den Fehler. ich bearbeitet habe, auf diese Weise: Paket ClassFiles; //Klasse Körper
  • Setzen Sie den code in deine Frage, oder an dieser Stelle, pastebin oder gisthub, und bieten einen link. Du bist fehlen einige grundlegende Java-Zeug, das ist wohl besser an anderer Stelle diskutiert.
  • es sind 16 Dateien neben dem... und der code funktioniert, ich kann einfach nicht die JAR. sollte ich wirklich poste den gesamten code?
  • Hast du re-kopieren der class-Datei, um die ClassFiles Verzeichnis und re-jar? Es klingt nicht wie es.
  • Nein, der rest ist irrelevant, nur das Paket, die ersten paar Zeilen Main.java und ob oder nicht Sie re-bewegt die .Klasse file und re-erschüttert. Wenn Sie es Taten, es kann nicht scheitern-ich habe das exakt gleiche Datei-layout hier und es funktioniert gut.
  • ich nahm mir die Dateien aus dem Projekt-Verzeichnis, die .Klasse und die .java. was meinst du mit re-erschüttert? daneben ist es eine Möglichkeit, dass wir sprechen können und in einen besseren Weg? vielleicht hast du ja skype? (wenn Sie sind komfortabel ofc). ah gut ich habe wie 16 weitere Dateien drin.
  • Sie müssen die jar-Dateien wieder, weil Sie diese geändert haben. gist.github.com/1205093
  • wenn Sie können, warten Sie eine minute, kann mir vielleicht gefallen dir meine Ordner, so dass Sie verstehen, was ich sage... neben ich danke Ihnen eine Menge, Sie sind echt nett 🙂
  • Jetzt neu kompilieren, kopieren Sie die class-Datei in den ClassFiles Verzeichnis, re-jar alles, und es sollte funktionieren.
  • ich dachte, sollte ich hinzufügen, das "Paket" für jeden .java-Datei, die ich bekam?
  • Ja, wenn du noch andere source-Dateien in den JavaFiles Verzeichnis; Sie sind alle im gleichen Paket.
  • vielleicht war es das. jetzt werde ich versuchen. anwyay ist noch nicht in woking.
  • funktioniert immer noch nicht. ich weiß nicht, was zu tun T_T
  • Blick auf meine Kernaussage: Sie haben mehr Unterricht, aber das ist nicht relevant. Wenn Sie kompilieren Sie alle, verschieben Sie Sie in das richtige Verzeichnis, neu-jar-alles, es wird funktionieren. Ich würde empfehlen, einige sehr grundlegende Java-compilation/Paket/Verzeichnis-Struktur-tutorials, aber das ist nicht der richtige Ort, um dies fortzusetzen. Beginnen Sie mit meinem Beispiel auf Ihrem Rechner--mit etwas einfachem beginnen, nicht alle auf einmal.
  • Aussehen schicke ich Euch den link zu dem Ordner, die ich derzeit benutze, um die Arbeit zu tun. ich veränderte alle Dateien hinzufügen des Pakets: dl.dropbox.com/u/27045853/Project.tar.gz
  • meinst du neu kompilieren mit java?
  • Wie sonst würden Sie kompilieren Sie Ihre Java-Quellcode?
  • Recht, sorry. tun Sie es jetzt. thx für die Geduld, die man
  • WOW, ES FUNKTIONIERTE. ICH LIEBE SIE. danke Mann, ich danke Ihnen sehr, sehr viel 😀 nun, wie gebe ich Sie ansehen? das erste mal auf dieser Website
  • naja, ich geh schlafen, sorry ich kann Ihnen nicht ansehen oder sonst was. aber ich habe wirklich apriciated, was du getan hast, wir danken Ihnen sehr viel wieder. ich wünschte, u ein gutes Leben 🙂
  • Sie akzeptieren und Stimmen meine Antwort 🙂 Froh, dass Sie arbeitete es aus.
  • leider muss ich 15 rep geben Sie +1 für die Antwort, aber ich akzeptierte es, hoffe ist enaught 🙂 danke nochmals!
  • Es sieht nicht wie Sie akzeptierte seine Antwort. Ich habe upvote es aber.
  • Ich bin erschöpft...
  • probabily ich weiß nicht, wie es zu tun, ging ich auf seine Antwort und klickte auf "war dieser Beitrag nützlich für Sie" JA". mehr als das, ich weiß nicht, was ich tatsächlich tun kann. trotzdem danke erickson für " + " Eindruck schinden ihn 🙂

InformationsquelleAutor AscaL | 2011-09-08
Schreibe einen Kommentar