Вопрос-ответ

Adding external library to artifact jar in IntelliJ IDEA

Добавление внешней библиотеки в artifact jar в IntelliJ IDEA

Как я могу добавить внешнюю библиотеку в проект в IntelliJ IDEA, чтобы при создании артефакта он по-прежнему имел доступ к классам в библиотеке?

Я создал новый артефакт Jar из Project Structure, затем добавил внешний JAR в библиотеки, затем проверил его в списке модулей и, наконец, добавил его в выходные данные для артефакта. Ничего из этого не работает. Когда я создаю и пытаюсь запустить свое приложение, оно выдает ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: <path of the class trying to use>

Чего мне не хватает, или я делаю это совершенно неправильно?

Переведено автоматически
Ответ 1

Здесь у вас есть 2 варианта:


  • извлеките зависимость в файл artifact jar, чтобы приложение представляло собой единый исполняемый файл jar со всеми зависимостями

  • свяжите зависимые jar с помощью Manifest.MF и скопируйте их рядом с основным jar приложения

Я подготовил пример проекта, который демонстрирует оба подхода: HelloWithDependencies.zip.

Артефакты создаются в out\single и out\linked каталогах.

Соответствующие конфигурации:

single

ссылка

Ответ 2

If you are using maven to build your application then this is not the correct way to add external library. You should either


  1. Do an install of your library like below mvn install:install-file -Dfile=myJar.jar -DgroupId=com.yourproject -DartifactId=yourproject -Dversion={version} -Dpackaging=jar.

  2. Use system path like explained here.

Option 1 is prefered since you don't have to keep jar in your project.

java maven intellij-idea