2016-08-01 33 views
0

Ich möchte alle Dateien in meiner ausführbaren .JAR (Ressourcen, externe Libraries und Anwendung .class-Dateien) mit Eclipse neu organisieren.Organisieren Sie Bibliotheken und Ressourcen in einer ausführbaren Datei. JAR

Was ich habe:

My.JAR 

> folder "com" for external library 1 (com.apple.***) 

> folder "org" for external library 2 (org.javasypt.***) 

> folder "main" (package) 
    >> .class files 

> folder "resources" 
    >> all resources files (images, texts...) 

> folder "META-INF" 
    >> "MANIFEST.MF" file 

Was ich haben will:

My.JAR 

> folder "main" 
    >> folder "resources" 
     >>> all resources files 

    >> folder "libraries" 
     >>> external library 1 (com.apple.***) 
     >>> external library 2 (org.javasypt.***) 

    >> .class files 

> folder "META-INF" 
    >> "MANIFEST.MF" file 

Ist es möglich, dies zu erreichen? Vielen Dank !

+0

A) Warum interessiert es dich, wie die JAR-Struktur aussieht? Normalerweise ist der einzige "Client" einer JAR die JVM, die sie lädt. B) Erwarten Sie, dass diese benutzerdefinierte Struktur von einer JVM geladen werden kann? –

+0

A) Eigentlich ist es nur, um eine organisierte Struktur zu haben, und zu wissen, ob es möglich war. b) Ja, natürlich .. –

Antwort

0

Nein, die JAR file specification diktiert eine bestimmte Struktur. Sie versuchen, Organisation für Mensch und Organisation für die Laufzeit zu mischen, aber diese beiden Konzepte unterscheiden sich. Organisieren Sie Ihre Quelle auf jeden Fall so, wie Sie es für richtig halten, aber Sie können nicht erwarten, dass die Laufzeitumgebung (JVM) irgendeine beliebige Struktur versteht. Aus diesem Grund gibt es Build-Tools (Gradle, Maven, Ant usw.), die helfen, die Struktur der JAR-Spezifikation exakt zu erstellen.

Erkennen Sie, dass in Ihrem Beispiel org und com nicht wirklich Ordner sind, sie sind Knoten (Ebenen) in Paketstrukturen. Das Gleiche gilt für Ihre main - es ist nur ein Paket.

resources ist die einzige Sache, die Sie etwas Flexibilität haben, wie Sie das nennen können, was auch immer Sie wollen, solange der Code, der Inhalt von ihm liest, diesen Namen zu erwarten hat.

META-INF und die Manifest-Datei werden von der Spezifikation diktiert und können nicht geändert oder verschoben werden.

+0

Danke! Ich weiß, was Dateien/Ordner/Pakete sind und wofür sie verwendet werden, aber ich habe nur erwartet, dass ich die Struktur neu organisieren werde. Ich werde sehen, was graden oder maven bietet, um zu bauen, was ich will! –

+0

Ich denke, du verstehst die Antwort falsch. Der Punkt der Antwort ist, dass die JAR-Struktur im Detail spezifiziert ist, Sie können nicht so viel abweichen. Eine JAR, die wie oben beschrieben aussieht, ist keine gültige JAR und kann von der JVM nicht verwendet werden. –

+0

Okay, ich werde meine JAR so mögen! Vielen Dank ! –