Java編譯的jar運行之坑
平時基本上不用Java,奈何有個項目要與第三方平臺對接,第三方平臺的某些功能是需要嚴格使用對方提供的接口調用,與java深度綁定,用C#模擬對方給的javasdk去請求也不行,只好用java寫一個調用對方sdk獲取請求結果的api,再通過C#調用自編的java api(其實我的功能很簡單,完全可以直接用java寫完,本身c#寫的部分也是webapi,就是懶,就是不愿意整java......)。
調試很正常,一上午的時間就滿足了構想,實現了用java通過第三方sdk獲取要取的數據,c#也實現了調用自編的java api,但是在java打包成jar,并在cmd部署的時候,總是出錯。出錯類型主要有兩類:
1、使用meavn打包的jar,報 'A JNI error has occurred,please check your installation and try again'錯誤,百度上大部分都是說java版本沖突,實際上很扯淡,很多時候根本部署版本沖突。
2、使用工件打包的jar,報Exception in thread "main" java.lang.NoClassDefFoundError...。
其實我都能猜到,我這里的錯誤是因為引用一部分第三方包,但是打包的時候沒給我打進去,百度搜索關于怎么打包完整,得到的信息很多都沒用,直到看到了這篇IDEA如何打包可運行jar,外部引用jar包版
,才有點思路。
最后還是采用工件的方式打包
- 設置工件,設置主類,注意選復制到輸出目錄并通過清單鏈接,META-IN/MANIFEST.MF設置到src目錄即可
![]()
- 在<輸出跟>右鍵點創建,建一個libs文件夾,并將下面的依賴項jar都拖到libs中(按住ctrl鍵、shift鍵可以多個一起拖)
![]()
- 點我們本次要打包的jar,設置項目的類路徑(classpath),跟第二部的一致( 其實默認都有了,我們因為把他放在了libs里,所以每一項前面加個libs/ )
![]()
- 構建工件即可,涉及到的依賴庫都在libs了。
本文來自博客園,作者:GIS民工,轉載請注明原文鏈接:http://www.rzrgm.cn/kook2007/p/16271875.html




浙公網安備 33010602011771號