我有一个包含两个项目的 gradle 设置。布局:
build.gradle
libtestapp/
>src/
>main/
>java/
>testapp/
>Test.java
settings.gradle
testapp-gui/
>src/
>main/
>java/
>testapp/
>TestGui.java
项目 testapp-gui 使用 libtestapp 中的函数。 项目 testapp-gui 在运行 gradle :testapp-gui:build 时进行编译。 但是当运行 jar 时,Java 提示缺少类 Test。
构建.gradle:
subprojects {
apply plugin: 'java'
}
project(':testapp-gui') {
dependencies {
compile project(':libtestapp')
}
jar {
manifest {
attributes 'Main-Class': 'testapp.TestGui'
}
}
}
设置.gradle:
包含“libtestapp”、“testapp-gui”
测试.java:
package testapp;
public class Test {
public static void call() {
System.out.println("Hi, Im in libtestapp.");
}
}
TestGui.java:
package testapp;
import testapp.Test;
public class TestGui {
public static void main(String[] args) {
Test.call();
}
}
Java 错误:
Exception in thread "main" java.lang.NoClassDefFoundError: testapp/Test
at testapp.TestGui.main(TestGui.java:8)
Caused by: java.lang.ClassNotFoundException: testapp.Test
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
最佳答案
除非您从 IntelliJ 或其他 IDE 中执行应用程序,否则在使用命令行时,您需要使用 '-classpth' 或 '-cp 显式包含依赖项' 开关:
java -cp .;libs\*.jar your.package.MainClass
关于java - gradle 中的依赖项不链接 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150015/