2013-05-17 41 views
3

結構在我的罐子是:類路徑清單不工作的文件

com/my/Main.class 
META-INF/MANIFEST.MF 
RXTXcomm.jar 

的MANIFEST.MF包括:

Manifest-Version: 1.0 
Main-Class: com.my.Main 
Class-Path: RXTXcomm.jar 

(空行存在)

當我跑我的罐子作爲:java -jar my.jar

我得到:Exception in thread "main" java.lang.NoClassDefFoundError: gnu/io/SerialPortEventListener

有什麼不對?

回答

7

有什麼不對?

您已經將jar依賴關係打包到您的主jar文件中。 Class-Path的用意是向類路徑中添加一個外部jar,路徑相對於主jar的位置。

標準Java類加載器不支持在jar中打包jar。不過,如果你願意,你可以將內部罐子爆炸到主罐子中。 Maven可以爲你做這件事。

+0

那麼如何給需要與新jar打包的依賴jar的相對路徑? –

+0

簡單的答案是你不能。解決方法可能是將它們打包爲Zip,並將相關的jar包裝在子文件夾中。然後,您可以在主jar的清單中添加Class-Path:子文件夾/ RXTXcomm.jar。 – Raza

1

RXTXcomm.jar一定不能在jar文件中,而是在它之外。閱讀the tutorial