Eclipse build path / JBoss AS7 Class Загрузка Исключений Вопрос - PullRequest
2 голосов
/ 18 августа 2011

Я перевожу приложение JBoss AS5 на AS7.Я столкнулся с NoClassDefFoundErrors из-за перепроектированного модульного дизайна загрузки класса AS7.Я следовал руководству разработчика JBoss о том, как разрешать исключения загрузки классов https://docs.jboss.org/author/display/AS7/Developer+Guide#DeveloperGuide-Resolveclassloadingexceptionsandothererrors, в которых вы делаете такие вещи, как добавление модулей в качестве зависимостей в файл MANIFEST.MF вашего приложения, но у меня было много проблем с этим.Ни одна из моих попыток устранить ошибки загрузки моего класса с помощью MANIFEST.MF или ручного копирования jar-файлов в каталог WEB-INF / lib / моего приложения, похоже, не сработала.

В Eclipse я пытался щелкнуть правой кнопкой мыши мой проект и вручнуюдобавление классов, указанных в моих ошибках загрузки классов, в JAVA BUILD PATH моего проекта.Я смог устранить все ошибки загрузки классов с помощью этого метода.Мой вопрос - как Eclipse хранит информацию о пути сборки и делает ее доступной для моей сборки maven?Создает ли он где-нибудь в файловой системе файл MANIFEST.MF или jboss-deploy-structure.xml, используя информацию JAVA BUILD PATH?Я хотел бы найти любой файл, который Eclipse использует для хранения JAVA BUILD PATH, чтобы я мог развернуть свое приложение без необходимости вручную добавлять зависимости через Eclipse в JAVA BUILD PATH.Спасибо.

1 Ответ

0 голосов
/ 11 апреля 2012

Неразбериха с MANIFEST.MF в среде разработки звучит ужасно.Для автоматического управления зависимостями используйте Maven (это не идеальный инструмент, но он стандартный, имеет хороший плагин Eclipse, так что, в конце концов, его не так уж и трудно использовать).

Путь сборки Java хранится вЗатмение в файле .classpath в каталоге проекта (обратите внимание на точку в начале).Файл выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>
    <classpathentry kind="lib" path="lib/oscache-2.1.jar"/>
    <classpathentry kind="lib" path="lib/proxool-0.8.3.jar"/>
    <classpathentry kind="lib" path="db/derby.jar"/>
    <classpathentry kind="lib" path="db/derbyclient.jar"/>
    <classpathentry kind="lib" path="lib/commons-logging-1.1.1.jar"/>
    <classpathentry kind="lib" path="lib/log4j-1.2.16.jar"/>
    <classpathentry kind="lib" path="lib/slf4j-api-1.6.1.jar"/>
    <classpathentry kind="lib" path="lib/slf4j-log4j12-1.6.1.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

Так что он может быть сгенерирован с помощью простого скрипта, если у вас есть список зависимостей.

Помните, что Eclipse любит кэшировать вещи.Поэтому, когда вы изменяете файл .classpath, обновите свой проект вручную (F5), иначе вы не увидите никаких изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...