Ausführen einer ausführbaren jar-ClassNotFoundException werfen

Den Verzeichnissen, die in meinem jar-Dateien sind wie diese:

in remote.jar

 -com
 -lib
 -META-INF

unter META-INF ist die Datei MANIFEST.MF:

Manifest-Version: 1.0
Class-Path: lib/*
Main-Class: com.xx.xx.Main

und alle Gläser sind unter lib Ordner.

Aus der command-line wenn ich java -jar remote.jar es gibt mir ClassNotFoundException die Klasse nicht gefunden, wird in einem der Gläser unter lib Ordner. Wenn die main Funktion nicht auf jede Klasse in der lib, die Befehlszeile ausführen, kein problem.

Meine Frage ist, warum es nicht finden können, die Klassen in jars unter lib.

EDIT:

Keine verschachtelten Ordner unter Ordner lib

  • möglich, Duplikat der java.lang.ClassNotFoundException beim ausführen von java-jar (immer noch ungelöste)
  • auf einer seitlichen Anmerkung: dein Titel ist falsch
  • Ändern Sie den Klassenpfad für die zu ./lib/
  • nicht Arbeit, die ich versuchte.
  • Ich habe erfolgreich erstellt eine ausführbare jar-Datei verweisen auf Drittanbieter-jars über export in Eclipse. Eclipse dann behandelt die Erstellung des MANIFESTS.MF für mich und fügte hinzu, die notwendigen Sachen zu laden jars in einem jar.
  • Sorry, dass ich IDEE
  • Ah. Ich habe nie IDEE, aber gerade diese link, die Ihnen helfen könnten, aus.
  • genau den link gefolgt, die Sie veröffentlichen, und erstellen Sie das Glas, aber nicht laufen kann
  • Entschuldigung. Dieser link ist nur für die Erstellung einer normalen jar, nicht eine ausführbare Datei ein. Leider konnte ich nicht herausfinden, wie das zu erreichen ist in IntelliJ IDEA. Vielleicht wird es einfacher mit Eclipse, aber das ist ein bisschen Schmerz nur um eine runnable jar.
  • Ich verstehe, trotzdem danke.
  • Bitte schauen Sie sich One-Jar aus meiner Antwort. Ich habe nicht verwendet es nicht persönlich, aber ich habe gelesen, dass viele Leute empfehlen, es zu schaffen, eine einzige ausführbare jar-Datei. Ansonsten könnten Sie überprüfen, stackoverflow.com/questions/2025607 , aber ich bin nicht sicher, es ist über ausführbare jars entweder.
  • Ja, ich habe versucht, in meinem ersten Versuch ist die Nutzung von One-Jar und es funktioniert ganz gut, aber ich kann nicht es nehmen, weil es bauen alle Abhängigkeiten in eine jar-Datei, die so groß ist, dass in meinem Projekt, so habe ich, um eine kundenspezifische version erstellen, mit mehreren Klasse und ein paar benutzte Gläser.
  • Ich bin ziemlich sicher, dass Man-Glas können Sie konfigurieren, welche Gläser zu packen und die bleiben, wie die Laufzeit-Abhängigkeit (ist es das, was Sie wollen ?) Auch, konnten Sie mit einer Beute in Proguard. Es kann zu extrahieren und pack zu bestimmten Klassen, nicht ganz, Gläser.
  • Verwenden Sie Maven ? Es wird Ihnen helfen, Ihre Abhängigkeiten, wie Sie das möchten.
  • Vielen Dank für Ihre Antwort, ja ich benutze maven, ich ging auch um zu sehen, doc für one-jar aber leider noch keine Informationen über "die Gläser zu packen und die bleiben, wie die Laufzeit-Abhängigkeit".
  • Ich denke, du bist Recht über die mangelnde Flexibilität von One-Jar. Lassen Sie uns versuchen, um es zu packen mit maven dann. Schau mal hier : stackoverflow.com/questions/16222748
  • für die Frage zu, obwohl es scheint ein ziemlich verbreitetes problem, habe ich etwas neues gelernt heute.
  • danke, ich habe gerade versucht JarSplice Sie sagte, es fast arbeiten, scheitern aber am letzten Schritt, Sie sagte, ich habe dupliziert Klasse in einem Glas, ohne das Glas könnte es bauen, aber Sie wissen, nicht finden können, in der Klasse, wenn nötig, zu laufen. Ich versuche Proguard...
  • lassen Sie uns weiter, diese Diskussion im chat

InformationsquelleAutor Mike | 2013-11-07
Schreibe einen Kommentar