簡體   English   中英

嘗試打開罐子時發生意外錯誤

[英]An unexpected error occurred while trying to open jar

我有一個春季批處理項目導出為可運行的Jar文件,它有4個主要方法,只有一個主要正在工作,另一個主要需要引用jar jai-codec-1.1.3.jar,但是當我將jar放在類路徑中時,第一個主電源也無法工作,並顯示錯誤消息“嘗試打開jar時發生意外錯誤”

這是我的mainfest文件:

清單版本:1.0類路徑:JARS / spring-jdbc-3.1.1.RELEASE.jar JARS / spring-context-3.2.3.RELEASE.jar JARS / log4j-1.2.14.jar JARS / spring-tx- 3.2.3.RELEASE.jar JARS / spring-core-3.2.3.RELEASE.jar JARS / spring-beans-3.2.3.RELEASE.jar JARS / commons-logging-1.1.1.jar JARS / spring-aop- 3.2.3.RELEASE.jar JARS / aopalliance-1.0.jar JARS / spring-expression-3.2.3.RELEASE.jar JARS / commons-dbcp-1.4.jar JARS / commons-pool-1.5.4.jar JARS / ojdbc6 -11.2.0.3.jar JARS / commons-lang3-3.0.jar JARS / itextpdf-5.5.1.jar JARS / jdom2-2.0.5.jar JARS / jai-codec-1.1.3.jar

我發現這不是因為特定的jar文件,而是因為classpath的長度超出了限制,有沒有辦法在MAINFEST文件的classpath中放置更多的jar?

我也定義了所有@autowired服務和組件類,但是它仍然不能在jar中工作,只有當我在spring-config中將它們定義為bean時,它才起作用。

任何人都可以幫助我找出原因嗎?

問題解決了。 我不確定這是否是MAINFEST文件中classpath大小的限制,但是當它太長時,這真的很重要,我將所有jar名稱更改為1、2、3 ...,並能夠將所有jar放在classpath中,並且有效。 如果您對此有其他意見,請留下您的評論,謝謝。

該錯誤可能表明(盡管以非常不清楚的方式) MANIFEST.MF錯誤。 這可以通過文件中間的無效空行或太長的行來模擬。

MANIFEST.MF是極度手動編輯不友好的:

  • 它必須有最后一個空行(或換句話說,最后一個行終止符),
  • 它的行最多不能超過72個字符(我敢打賭這是您的真正問題,只是解決了症狀)
  • 延續線必須以空格開頭...
  • 並且最重要的是,類路徑條目必須是URL,而不是文件路徑。

有關其規范的更多信息,請參見: https : //docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html

我將補充說,清單中的屬性一定不能用點分隔,破折號或沒有分隔符:“ myProperty”將起作用,“ my-property”也將起作用,但是“ my.property”將失敗,並顯示“錯誤:發生了意外錯誤”同時嘗試打開文件...”,完全沒有任何解釋。 盡管“ my.property”在某些獨立的應用程序中可以用作Java屬性,但是在讀取清單時,它只是中斷了JAR中嵌入式應用程序的啟動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM