我用的是Eclipse打包,但在CMD窗口執行的時候報“ActiveMQ.jar中沒有主清單屬性”錯誤。
在網上搜了下,這個與MANIFEST.MF文件有關,該文件沒有定義MAIN方法所在類的路徑,利用好壓打開jar包,果然如此。里面只有一行
Manifest-Version: 1.0
需添加Main-Class。在本例中,添加如下:
Main-Class: com.luoluo.TestUse.activemq.ActiveMQStateMain
上面,有幾點需要注意:
1. Main-Class:和com.luoluo.TestUse.activemq.ActiveMQStateMain中間必須有個空格,切記。
2. com.luoluo.TestUse.activemq是該類的包名,ActiveMQStateMain是main方法所在的類名,注意:后面不用加上.java或.class。
3. 如果不引用第三方包,需回車讓光標到下一行。不然還是會報“ActiveMQ.jar中沒有主清單屬性”錯誤。如果引用了第三方包,在Class-Path后面回車,總之,在指定了相關的參數后,均需要回車讓光標到下一行。
上面的只是定義了主類,如果引用了第三方包,則會報以下錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/activemq/broker/jmx/BrokerViewMBean
這時,需在MANIFEST.MF文件中定義Class-Path。在本例中,添加如下:
Class-Path: lib/activemq-all-5.12.1.jar
注意:Class-Path和lib/activemq-all-5.12.1.jar之間也同樣需要個空格。
同時,在jar包的同層目錄下,新建一個lib文件夾,將activemq-all-5.12.1.jar copy到里面去。
譬如,在本例中,jar包是在C:\Users\Victor\Desktop下,則需在C:\Users\Victor\Desktop目錄下新建一個lib文件夾,將相應的第三包放里面去。
前者是打包的jar包,后者是lib文件夾,里面放的是第三方jar包。
最后,MANIFEST.MF文件中的內容如下:
最后執行的結果如下:
以上內容給大家分享的Java在制作jar包時引用第三方jar包的方法,希望大家喜歡。