2016-08-01 7 views
0

Je souhaite réorganiser tous les fichiers de mon fichier exécutable .JAR (ressources, librairies externes et fichiers de l'application .class) à l'aide d'Eclipse.Organiser les bibliothèques et les ressources dans un exécutable .JAR

Ce que j'ai:

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 

Ce que je veux avoir:

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 

Est-il possible d'obtenir cela? Merci !

+0

A) Pourquoi vous souciez-vous de la structure du JAR? Habituellement, le seul "client" d'un JAR est la JVM qui le charge. B) Pensez-vous que cette structure personnalisée puisse être chargée par une machine virtuelle Java? –

+0

A) En fait, c'est juste pour avoir une structure organisée, et pour savoir si c'était possible de le faire .. b) Oui, bien sûr .. –

Répondre

0

Non, le JAR file specification dicte une structure spécifique. Vous essayez de mélanger l'organisation pour les humains et l'organisation pour l'exécution, mais ces deux concepts sont distincts. Bien sûr, organisez votre source comme bon vous semble, mais vous ne pouvez pas vous attendre à ce que l'environnement d'exécution (JVM) comprenne une structure arbitraire. C'est pourquoi les outils de construction (gradle, maven, ant, etc) existent pour aider à produire la structure de spécification JAR exactement.

Sachez que dans votre exemple, org et com ne sont pas vraiment des dossiers, ce sont des nœuds (niveaux) dans les structures de paquets. Pareil pour votre main - c'est juste un paquet. La seule chose qui vous donne une certaine flexibilité, c'est que vous pouvez nommer ce que vous voulez tant que le code qui lit le contenu connaît ce nom.

META-INF et le fichier manifeste sont dictés par la spécification et ne peuvent pas être modifiés ou déplacés.

+0

Merci! Je sais quels sont les fichiers/dossiers/paquets et à quoi ils servent, mais je m'attendais juste à réorganiser toute la structure. Je verrai ce que Graden ou Maven propose pour construire ce que je veux! –

+0

Je pense que vous avez mal compris la réponse. Le point de la réponse est la structure de JAR est spécifié en détail, vous ne pouvez pas dévier autant. Un JAR qui ressemble à ce que vous avez proposé ci-dessus n'est pas un JAR valide et ne sera pas utilisable par la JVM. –

+0

Ok, donc je vais laisser mon JAR comme ça! Merci ! –