我有导出为一个可运行的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服务和组件类,但它仍然不是在罐子工作,但只有当我定义的那些如春,配置豆的作品。
谁能帮我找出原因?
问题解决了。我不知道这是否是类路径大小的MAINFEST文件的限制,但它真的很重要,当它太长了,我改变了所有jar名称为1,2,3 ...并且能够把所有的罐子在classpath ,和它的作品。请留下您的意见,如果您对此有不同的看法,谢谢。
此错误可能表示(在一个非常不清晰的方式虽然)在MANIFEST.MF
错误。这可以通过无效的空行的文件的中间或线路太长效仿。
MANIFEST.MF
极为手动编辑不友好:
更多关于它的规格可以在这里找到:https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html
我将添加属性在清单必须不点分开,无论是破折号或没有分隔符:“myProperty的”会工作,“我的属性”将工作过,但“my.property”将失败,“错误:发生意外错误试图打开文件...”没有解释的。虽然“my.property”会在一些独立的应用程序的Java属性的工作,它只是打破推出了JAR内的嵌入式应用的是读清单的时候。