2016-07-01 12 views
1

私は2つのプロジェクトで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(); 
    } 

} 

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 
+0

どのようにしてプログラムを実行していますか?あなたはクラスパスを含んでいますか? – chrylis

答えて

1

あなたはIntelliJのか、別のIDE内からアプリケーションを実行している場合を除き、コマンドラインを使用しているとき、あなたはを使用して、明示的に依存関係を含める必要が「-classpth」または'-cp'スイッチ:

java -cp .;libs\*.jar your.package.MainClass 
関連する問題