У меня есть проект среднего размера, и я планирую создать супер-банку. Я скомпилировал его с помощью 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-файлов в целевом каталоге.
Кто-нибудь знает, что может пойти не так и как мне его отладить?