2014-02-07 44 views
0

我是Gradle構建工具的初學者。我成功編譯HelloWorld.java代碼,但試圖運行時,它提供以下錯誤:java.lang.NoClassDefFoundError:試圖運行程序時在hello.HelloWorld.main上的org/joda/time/LocalTime

Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/LocalTime at 
     hello.HelloWorld.main (HelloWorld.java:7) 

我HelloWorld.java代碼:

package hello; 

import org.joda.time.LocalTime; 

public class HelloWorld { 
public static void main(String[] args) { 
LocalTime currentTime = new LocalTime(); 
System.out.println("The current local time is: " + currentTime); 

Greeter greeter = new Greeter(); 
System.out.println("greeter.sayHello()"); 
    } 
} 

迎賓類只是其中包含的sayHello類()方法來打印「Hello World」消息。

搖籃的的build.gradle代碼:

apply plugin: 'java' 

repositories { 
mavenCentral() 
} 

dependencies { 
    compile "joda-time:joda-time:1.5" 
} 

請找出問題和答覆...

在此先感謝。

+0

你不告訴我們你是如何運行您的程序。你意識到joda-time jar必須在類路徑中,對吧? –

+0

我試圖通過命令提示符運行我的程序作爲「java -cp build/classes/main hello.HelloWorld」是的,我意識到joda-time jar在運行時缺少,但是在構建過程中卻說下載了jar。現在我無法找到的問題在哪裏。 – niteshpandey

+0

記錄:gradle通過生成類和包含這些類的jar來構建應用程序。它將必要的庫下載到它的緩存中以便能夠構建它。但爲了運行你的應用程序,你必須明確地在classpath中添加所有需要的運行時庫,使用'java -cp yourJar.jar:/ path/to/joda-time.jar'。 –

回答

3

使用應用程序插件。

apply plugin: 'application' 
mainClassName = 'hello.HelloWorld' 

然後運行:

gradle installApp 

這將創建一個編譯/安裝/ nameofyourapp文件夾中。這裏面是一個bin文件夾,其中包含用於正確運行應用程序的腳本。

編輯:

假設您的應用程序叫做my_app應用(這是的build.gradle文件下的文件夾的名稱),運行應用程序,您需要輸入:

的Linux

build/install/my_app/bin/my_app 

的Windows

build\install\my_app\bin\my_app.bat 
+0

感謝您的回答。這很有幫助。 建立成功。 但指導我如何使用java插件通過命令提示符運行我的主類爲「java -cp build/classes/main hello.HelloWorld」? – niteshpandey

+0

我已經更新了答案,給這 – mikea

+0

冉成功.....謝謝 – niteshpandey

相關問題