Итак, я написал один класс с основным методом, который зависит от другого файла jar, который зависит от многих файлов jar. Чтобы упростить работу, я использовал One-JAR и создал единую исполняемую банку. Сосуд Я создал это хорошо, я был в состоянии запустить его:Eclipse не распознает банку, созданную с помощью One-JAR
java -jar foo.jar
Это успешно выполняет свое основное приложение.
Далее я создал новый проект в Eclipse и добавил foo.jar в путь сборки через «добавить внешние банки» (я делаю это все время и всегда работает). По какой-то причине в моем проекте Eclipse он жалуется, что он не распознает импорт пакета из foo.jar.
Я рассмотрел предыдущие вопросы о проблемах с банками с Eclipse, но никто не помог. Я подозреваю, что это связано с деревом, созданным One-Jar, но поскольку «java -jar foo.jar» из командной строки отлично работает, я не понимаю, почему Eclipse не видит файлы классов.
Спасибо!
Update: Вот как мой foo.jar создатель One-Jar выглядит как:
META-INF OneJar.class com doc lib main
внутри основной:
main main.jar
нутро это главный пакет дерева моего приложения с. класс файлов. Теперь, если я включу «main.jar» в Eclipse, он распознает мое приложение. Но тогда он не распознает другие зависимости в lib /, поэтому он генерирует исключения времени выполнения.
Обновление 2: Так что проблема с One-jar и Eclipse не решена, но кто-то упомянул плагин Eclipse с жирным банком, поэтому я попробовал его, и он отлично справился с этой задачей. Созданная банком работала как с Eclipse, так и с Maven. Они также поддерживают One-Jar, вы можете проверить опцию One-Jar при создании фляги. Я не использовал его, но он там (если он работает, он действительно стоит использовать, потому что он должен заботиться о библиотечных конфликтах). Спасибо за помощь.
Банка, созданная одним банком, представляет собой просто банку с классами в ней. –
Справа. Но предположим, что мой пакет com.example.main, тогда он помещает файл .class в: main/main/com/example/main/ – user247866
О, я понимаю, о чем вы говорите. Я думаю, что это делается для того, чтобы избежать конфликтов, похожих на то, как работает затенение - не уверен, что в одной банке есть опция, не связанная с изменением, или нет. –