gradle中的依赖关系不会链接jar

时间:2016-07-01 16:22:21

标签: java gradle

我有两个项目的gradle设置。布局:

build.gradle
libtestapp/
  >src/
    >main/
      >java/
        >testapp/
          >Test.java
settings.gradle
testapp-gui/
  >src/
    >main/
      >java/
        >testapp/
          >TestGui.java

Project testapp-gui使用libtestapp的功能。 项目testapp-gui在运行gradle时编译:testapp-gui:build。 但是当运行jar时,Java抱怨缺少类Test。

的build.gradle:

subprojects {                                                                                                                                                                                                    
    apply plugin: 'java'
}

project(':testapp-gui') {
    dependencies {
        compile project(':libtestapp')
    }

    jar {
        manifest {
            attributes 'Main-Class': 'testapp.TestGui'
        }
    }
}

settings.gradle:

包括'libtestapp','testapp-gui'

Test.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

1 个答案:

答案 0 :(得分:1)

除非您在IntelliJ或其他IDE中执行应用程序,否则在使用命令行时,您需要使用' - classpth''显式包含依赖项 - cp '开关:

java -cp .;libs\*.jar your.package.MainClass