2008-12-29 47 views
1

我在NetBeans中創建了一個新的J2SE項目,並且可以從IDE運行它,但是當我嘗試在命令行上使用Ant運行它時,出現以下問題:命令行中的NoClassDefFoundError與新的NetBeans項目

<剪斷>

run: 
    [java] Exception in thread "main" java.lang.NoClassDefFoundError: IndexBuilder 
    [java] Java Result: 1 

<剪斷>

基於從下面project.properties的片段中,類應該可以找到。

run.classpath=\ 
    ${javac.classpath}:\ 
    ${build.classes.dir} 

我該如何解決這個問題?

回答

0

當您從命令行運行它時,實際上是調用Apache Ant。您得到ClassNotFound異常的原因是因爲$ {javac.classpath}和所有其他屬性沒有正確填充。這就是爲什麼你的代碼在Netbeans上下文中運行。 Netbeans正在爲你設置這些屬性。

要回答你原來的你如何去得到它在命令行中運行的問題,你需要或者設置一個通過屬性聲明定義的參數屬性文件:

<property file="myproject.properties"/> 

另一個解決方案是通過sh腳本將屬性設置爲環境變量。或者,您可以在構建腳本中使用實際路徑而不是屬性。

有關如何從命令行調用Ant的更多詳細信息,請參見here

0

您是否嘗試在工程屬性 - >運行選項卡中將工作目錄設置爲「build \ classes」?

0

您的項目引用的至少一個JAR/Lib可能不會被複制到程序的類路徑。將項目使用的所有jar/lib文件複製到項目的/ dist文件夾(或任何YourApplication.jar所在的位置),然後嘗試運行程序。如果這解決了它,這意味着您的Netbeans項目配置不正確。

1

你得到的錯誤是指下列條件之一爲真:

  • IndexBuilder無法在類路徑中
  • IndexBuilder一個必要(類加載)的依賴性無法找到在classpath

也就是說,加載類時,有可能(甚至很有可能)階級可以發現但一些關鍵的依賴該類無法找到。例如,如果IndexBuilder擴展了另一個類,並且在類路徑中找不到該基類,則會出現此錯誤。另一個例子是如果IndexBuilder在靜態初始化器中使用一個類,並且找不到該類。

請檢查您的班級路徑,不僅僅是爲IndexBuilder,而且也爲IndexBuilder依賴的任何事情。

例如參見this discussionNoClassDefFoundError

0

你是在Windows還是Unix上運行它。如果是Windows,請嘗試將您的屬性文件更改爲:

 

run.classpath=${javac.classpath};${build.classes.dir} 
 

請注意用分號代替冒號。

+0

這是在Mac OSX上,所以Unix。 – 2009-03-04 19:40:52

相關問題