如何在製作jar包時引用第三方jar包,jar包時引用第三方
我用的是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檔案中的內容如下:
最後執行的結果如下: