Java не может найти класс в JAR - PullRequest
1 голос
/ 26 июня 2019

У меня есть проект среднего размера, и я планирую создать супер-банку. Я скомпилировал его с помощью Intellij и создал артефакт с «JAR-файлами из библиотек», для которого установлено «извлечь в целевой JAR».

Вот результат:

java -cp MyJar.jar com.package.MainClass
Error: Could not find or load main class com.package.MainClass

java -Xdiag -cp MyJar.jar com.package.MainClass
Error: Could not find or load main class com.package.MainClass
Caused by: java.lang.ClassNotFoundException: com.package.MainClass
java.lang.ClassNotFoundException: com.package.MainClass
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:415)
    at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:770)
    at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:655)

Если я перечислю содержимое jar, класс там. Если я извлекаю jar и запускаю класс из файловой системы, он работает:

jar xf MyJar.jar
java com.package.MainClass <-- it works

Если в IntelliJ я установил «JAR-файлы из библиотек» на «Копировать выходные данные и ссылку через манифест», jar-файл работает, но я получаю кучу меньших jar-файлов в целевом каталоге.

Кто-нибудь знает, что может пойти не так и как мне его отладить?

1 Ответ

0 голосов
/ 26 июня 2019

После многих испытаний кажется, что включение некоторых JAR-файлов вызывает проблему: power-mock, objenesis и mockito.

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