2016-04-07 8 views
0

Ich habe ein Eclipse-Projekt, das viele .jar-Dateien als Abhängigkeiten verwendet, aber keine Quelldateien hat. Es gibt eine Laufkonfigurationseinrichtung, die die Hauptmethode (Eintrittspunkt) als eine Methode innerhalb eines der eingeschlossenen Gläser definiert. Es läuft gut in Eclipse, aber wenn ich versuche, den ausführbaren jar-Assistenten zu verwenden, erhalte ich den Fehler "Die Hauptmethode konnte von der Startkonfiguration nicht gefunden werden."Erstellen Sie ausführbare Jar mit Einstiegspunkt in einem eingebetteten Jar

Laut this tutorial kann man mit dem jar-Befehlszeilentool den Einstiegspunkt eines jar manuell setzen, aber was soll ich als Pfad zur .class-Datei für die Hauptmethode verwenden, da ich das nicht direkt habe irgendwelche .class Akten, gerade eingebettete Gläser?

Oder gibt es andere Möglichkeiten, den Einstiegspunkt richtig zu setzen?

Antwort

2

Das Standard-JAR-Dateiformat ermöglicht ein Manifest und eine Reihe von Klassen-/Ressourcendateien. Natürlich können Sie JAR-Dateien in eine JAR-Datei packen, aber der Standard-Java-Klassenlader kann keine Klassen (aus den eingebetteten JAR-Dateien) auf diese Weise laden. Daher müssen Sie alle JAR-Dateien erweitern und sie entsprechend den Paketen neu packen. Auch dies gilt, wenn Sie nicht Ihren eigenen Klassenlader schreiben.

Wenn Sie Maven verwenden, bietet Maven glücklicherweise einige Plugins für diese Umpackaufgabe. Siehe Maven JAR plugin oder Maven Shade Plugin, die beim Erstellen des so genannten Uber JAR helfen, das optional ein Manifestattribut Main-Class verwenden kann. Alternativ können Sie in Abwesenheit von Maven die Klassen mithilfe eines einfachen Shell-Skripts erweitern und erneut anzeigen. Wenn Sie das tun, können Sie entweder java -jar myjar.jar oder java -cp myjar.jar my.main.Class verwenden.

Verwandte Themen