2016-07-01 3 views
1

두 개의 프로젝트가있는 gradle 설정이 있습니다. 레이아웃 :gradle의 종속성은 jars를 연결하지 않습니다

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 클래스가 없다고 불평합니다.

build.gradle :

subprojects {                                                  
    apply plugin: 'java' 
} 

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

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

settings.gradle :

package testapp;                                                 

public class Test { 

    public static void call() { 
     System.out.println("Hi, Im in libtestapp."); 
    } 

} 

TestGui :

가 'libtestapp', 'testapp를-GUI를'

Test.java를 포함한다. java :

package testapp;                                                 

import testapp.Test; 

public class TestGui { 

    public static void main(String[] args) { 
     Test.call(); 
    } 

} 

자바 오류 : 명령 줄을 사용하는 경우

당신이 인 IntelliJ 또는 다른 IDE 내에서 응용 프로그램을 실행하지 않는 한
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 
+0

어떻게 프로그램을 실행하는? classpath가 포함되어 있습니까? – chrylis

답변

1

, 당신이 필요가 '-classpth' 또는를 사용하여 종속성을 명시 적으로 포함하는 '-cp' 스위치 :

java -cp .;libs\*.jar your.package.MainClass 
관련 문제