Я занимался этим несколько дней и перепробовал много вещей, но, похоже, не могу этого понять. Я конвертирую многомодульный проект в intellij из maven в gradle и имею следующую структуру:
com.automation
build.gradle
API
- src / main / Authorization. java
- src / test / LoginAuth. java
- build.gradle
pageobjects
- src / main / LoginPage_Method. java
- build .gradle
testclasses
- src / test / LoginTests. java
- build.gradle
task fatJar(type: Jar) {
archiveBaseName = project.jar_name
zip64 = true
manifest {
attributes 'Main-Class': 'My Main Class'
}
from sourceSets.test.output
from { configurations.testRuntime.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
В моем файле com.automation > build.gradle
я пытаюсь создать фуджар, поэтому, когда я запускаю java -jar {nameofJar}.jar
, банка работает так, как должна. Проблема, которую я считаю, заключается в том, что при создании файла jar зависимости не создаются (я знаю это, потому что при извлечении jar я не вижу файлы classpath), поэтому при попытке запустить файл jar я получаю исключение :
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/runner/notification/RunListener
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.notification.RunListener
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
Любая помощь, чтобы понять это очень ценится.