Java 6: создание jar, пакет основного класса которого не находится в корне jar - PullRequest
0 голосов
/ 24 октября 2011

Я хотел бы создать Jar, пакет основного класса которого не находится в корне jar.

В приложении я только что написал основной класс

com.gmail.bernabe.laurent.test.HelloWorld

Я мог бы просто сделать Runnable jar из Eclipse IDE, но я бы хотел сделать шаг вперед => Организовать последнюю банку вот так


Root

=> META-INF

=> Lib

=====> com

==========> gmail

...


Вместо:

*

Root 1024 *

=> META-INF

==> com

======> gmail

...


Можно ли настроить файл манифеста так, чтобы Jar работал правильно?

Заранее спасибо


Почему я хочу это сделать?

Я хочу построить банку на основе JOGL, организованную следующим образом

=> JOGL (subdirectories are JOGL just needed files)
=> CORE (subdirectorie is the core application package)
=> LAUNCHER (subdirectory is the custom classloader package)
=> META-INF

1 Ответ

2 голосов
/ 24 октября 2011

Да и нет.

Нет, потому что вы не должны этого делать: представьте, кто-то поддерживает ваш код. Или даже вы сами, два года спустя, возвращаясь к проекту: вы видели сотни банок, организованных в соответствии с определением JarClassLoader, вы работали в десятках «обычных» проектов ... Теперь, ну, теперь вы видите файл JAR. Вы ожидаете, что у него будет хитрая пользовательская схема загрузки? Я сомневаюсь в этом.

Да, поскольку вы можете добавить еще один основной класс, использовать его для настройки загрузчика классов и после этого загружать классы из любого макета. Однако вам нужно будет хранить манифест и класс запуска в «правильных» местах.

Учебник по загрузке классов можно найти по адресу http://java.sun.com/developer/onlineTraining/Security/Fundamentals/magercises/ClassLoader/help.html

...