2011-02-06 35 views
1

我有一個構建設置,要求我的類放入我當前目錄的子目錄中的文件夾。 IE,如果我在'。',那麼這些類可能在'./somewhere_else/'主類不能設置爲現有類

問題是,當我這樣做時,我無法爲Main-Class設置一個值,它可以找到主類。我沒有問題,當我從建立在文件的JAR,但所有的嘗試以下主類結果java.lang.NoClassDefFoundError的「」:

Main-Class: ClassName 
Main-Class: FolderName.ClassName 
Main-Class: FolderName/ClassName 

我應該怎麼使用?

回答

1

你的jar裏面的類必須和你的包結構在同一個目錄結構中。

  • 所以,如果你希望你的ClassName類(沒有任何軟件包)是主要的類,它必須是在你的JAR的根目錄。
  • 如果您想要目錄FolderName中的類,則該同名必須是包名,這意味着源文件的第一行(非空的非註釋)行應該是package FolderName;

如果您的問題只是構建設置 - 這不是問題,那麼在jar外部的目錄的文件夾佈局並不一定必須與jar內部的佈局相同。但是如果文件夾結構符合包結構(上面還有其他目錄),它仍然有幫助。

0

我想你應該簡單地通過類名引用Main-Class(沒有目錄結構)。什麼可以幫助你解決這個問題就是你作爲類路徑所要做的。確保Main-Class的目錄位於類路徑中。

0

如果您ClassName位於包FolderName,那麼,它應該是: -

Manifest-Version: 1.0 
Main-Class: FolderName.ClassName 
Class-Path: <third-party>.jar <another-third-party>.jar 

他們是大小寫敏感的,順便說一句。