试图打开罐子时发生意外错误

问题描述 投票:0回答:3

我有导出为一个可运行的JAR文件中的Spring Batch的项目,它有4种主要的方法,只有一个主要工作,其他的主要需求引用的JAR宰编解码器1.1.3.jar,但是当我把罐子在classpath ,第一主也可以没有工作,它提供了错误信息“而试图打开罐子发生意外的错误”

这里是我的清单文件:

清单-版本:1.0类路径:JARS /弹簧JDBC-3.1.1.RELEASE.jar JARS /弹簧上下文3.2.3.RELEASE.jar JARS / log4j的-1.2.14.jar JARS /弹簧TX- 3.2.3.RELEASE.jar JARS /弹簧芯3.2.3.RELEASE.jar JARS /弹簧豆-3.2.3.RELEASE.jar JARS /共享记录-1.1.1.jar JARS /弹簧AOP - 3.2.3.RELEASE.jar JARS / aopalliance-1.0.jar JARS /弹簧表达-3.2.3.RELEASE.jar JARS /公地DBCP-1.4.jar JARS /公地池1.5.4.jar JARS / ojdbc6 -11.2.0.3.jar JARS /公地lang3-3.0.jar JARS / itextpdf-5.5.1.jar JARS / jdom2-2.0.5.jar JARS / JAI-编解码器1.1.3.jar

我发现,这是不是因为具体的jar文件,这是因为类路径的长度超过了限制,有没有把更多的罐子在MAINFEST文件类路径的方法吗?

还我已经定义了所有@Autowired服务和组件类,但它仍然不是在罐子工作,但只有当我定义的那些如春,配置豆的作品。

谁能帮我找出原因?

java eclipse spring jar classpath
3个回答
0
投票

问题解决了。我不知道这是否是类路径大小的MAINFEST文件的限制,但它真的很重要,当它太长了,我改变了所有jar名称为1,2,3 ...并且能够把所有的罐子在classpath ,和它的作品。请留下您的意见,如果您对此有不同的看法,谢谢。


0
投票

此错误可能表示(在一个非常不清晰的方式虽然)在MANIFEST.MF错误。这可以通过无效的空行的文件的中间或线路太长效仿。

MANIFEST.MF极为手动编辑不友好:

  • 它必须有(换句话说,或最终行终止)最终空行,
  • 其线条必须是72字符长最多(我敢打赌,这是你真正的问题,你只是固定的症状)
  • 并连续行必须以空格开始...
  • 和在它上面的类路径条目必须是网址,而不是文件路径。

更多关于它的规格可以在这里找到:https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html


0
投票

我将添加属性在清单必须不点分开,无论是破折号或没有分隔符:“myProperty的”会工作,“我的属性”将工作过,但“my.property”将失败,“错误:发生意外错误试图打开文件...”没有解释的。虽然“my.property”会在一些独立的应用程序的Java属性的工作,它只是打破推出了JAR内的嵌入式应用的是读清单的时候。

© www.soinside.com 2019 - 2024. All rights reserved.