Исключение ClassNotFound в проекте Maven после загрузки jar на Nexus - PullRequest
1 голос
/ 25 февраля 2011

Я работал над проектом Maven, используя Nexus в качестве менеджера хранилища. Короче говоря, есть 3 части: «Бизнес» (упакованный в .jar), «Web» (упакованный в .war) и «ear» (упакуйте все это в .ear)

Я работал отлично, но в последнее время я пытался добавить «нестандартный» jar (для преобразования пароля md5) в репозиторий, и он не работал так хорошо, я сделал следующее:

  • Получил файлы java с веб-сайта ( www.twmacinta.com ) для преобразования строки в md5.
  • Использовал его как java-файлы в моем проекте, и он работал отлично, затем я решил сделать из него баночку.
  • Скомпилировал исходники с помощью javac.
  • Использовал команду "jar" для создания архива ("com / twmacinta / util / MD5-2.7.1.jar").
  • Подключитесь к Nexus и загрузите банку.
  • Пошел к моему файлу pom.xml в части Businness, добавь зависимость через вкладки "Dependency" и "Add ..." (он нашел jar, нет проблем), которые добавляют это в мой pom. XML-файл:

    <dependency>
       <groupId>com.twmacinta.util</groupId>
       <artifactId>MD5</artifactId>
       <version>2.7.1</version>
    </dependency>
    
  • Добавлен импорт в моем бизнес-классе (он автоматически нашел импорт, нет проблем), например:

    import com.twmacinta.util.MD5;

На данный момент ошибок нет, поэтому я иду на чистую / установку / повторное развертывание, все в порядке.

Но когда я пытаюсь войти в приложение, я получаю следующее исключение:

java.lang.ClassNotFoundException: com.twmacinta.util.MD5
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
     [...]

MD5-2.7.1.jar обнаруживается в MavenDependencies of Business и ear, похоже, что любая другая библиотека, которую я уже использую (насколько я могу судить), так что я не понимаю ...

Пожалуйста, помогите мне =)

Nicolas

Ответы [ 3 ]

1 голос
/ 25 февраля 2011

Возможно, приложение не публикуется должным образом.

1 голос
/ 25 февраля 2011

Похоже, что библиотека не собирается на слух или на войне.
Где вы связываете свои зависимости?

  • ... war / web-inf / lib
  • или ... ear / lib

Проверять внутри обоих архивов, проверятьгде другие внешние библиотеки объединяются, проверьте, объявлены ли они как зависимости в родительском модуле, модулях war или ear.

РЕДАКТИРОВАТЬ:
ОК, так что проверьте содержимое файлов JAR, которые вы создали.
Выполните следующую команду для MD5-2.7.1.jar
jar -tvf MD5-2.7.1.jar
это должно перечислить содержимое файла, убедиться, что com / twmacinta / util / MD5.class указан в корне jar, и что любые дополнительные подкаталогине были включены в jar, что привело к записи класса, такой как build / com / twmacinta / util / MD5.class .
Кроме того, после того, как я теперь посмотрел на источник, я заметил, что библиотекаобслуживает собственные реализации JNI или java, существуют способы отключения собственного интерфейса с использованием различных системных свойств, иначе вам потребуется убедиться, что соответствующие ожидаемые библиотеки доступны в ожидаемом месте.

1 голос
/ 25 февраля 2011

Ваш файл jar должен находиться в com / twmacinta / util / MD5 / 2.7.1 / MD5-2.7.1.jar

Просто сравните с другими артефактами, вот как устроены банки с Maven 2+.

...