Я пытаюсь использовать (импортировать) класс, добавленный зависимостью моего проекта.
Я добавил зависимость gson в свой файл pom.xml следующим образом:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
И я побежал mvn install
после этого.
Теперь я могу найти зависимости jar в C:\Users\%Name%\.m2\repository\com\google\code\gson\gson\2.8.5
, поэтому я предполагаю, что он установлен правильно.
Когда я пытаюсь импортировать класс Gson в Java, возникает несколько проблем:
- Путь к импорту не
com.google.code.gson
, а com.google.gson
, я не понимаю, почему.
Когда я компилирую с пакетом mvn, все работает гладко. Но если я пытаюсь запустить код с java -cp .\target\testJSON-1.0-SNAPSHOT.jar json.App
, я получаю следующую ошибку, сообщающую, что класс Gson не найден:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/Gson
at json.App.main(App.java:13)
Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
Теперь из того, что я понял, ища решения:
Пока maven знает зависимости проекта, java
не знает. И мне нужно вручную добавить банку в путь к классам.
Итак, мои вопросы:
- Если я потрудился сказать maven, что мне нужен gson для запуска моего проекта, зачем мне вручную включать все зависимости для его запуска? Есть ли способ автоматизировать эту вещь простым и интуитивно понятным способом?
- Когда я ищу способы добавить несколько jar-файлов в путь к классам, единственные ответы, которые я нахожу, предполагают, что все jar-файлы находятся в одной папке, следовательно, предлагается сделать
java -cp folder/*.jar
. Файл jar, сгенерированный Maven, находится в целевой папке моего проекта, а файл gson - в папке .m2. Как добавить несколько банок (расположенных в разных местах) в classpath?
Спасибо,