这是我的主要文件:
Manifest-Version:1.0 Class-Path: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文件,这是因为类路径的长度超出了限制,有没有办法在MAINFEST文件类路径中放入更多的jar?
我也定义了所有@autowired服务和组件类,但它仍然无法在jar中工作,只有在spring-config中将它们定义为bean时才有效。
任何人都可以帮我弄明白为什么?
答案 0 :(得分:0)
问题解决了。我不确定它是否是MAINFEST文件中类路径大小的限制,但它确实很重要,当它太长时,我将所有jar名称更改为1,2,3 ......并且能够将所有jar放入类路径中,它的工作原理。如果您对此有不同意见,请留下您的意见,谢谢。
答案 1 :(得分:0)
此错误可能(以非常不清楚的方式)指示MANIFEST.MF
中的错误。这可以通过文件中间的无效空行或太长的行来模拟。
MANIFEST.MF
极难手动编辑:
有关其规格的更多信息,请参见:https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html
答案 2 :(得分:0)
我要补充一点,清单中的属性一定不能用点分隔,破折号或没有分隔符:“ myProperty”将起作用,“ my-property”也将起作用,但是“ my.property”将失败并显示“错误:尝试打开文件时发生意外错误...”,完全没有任何解释。 尽管“ my.property”在某些独立应用程序中可以用作Java属性,但是在读取清单后,它只是中断了JAR中嵌入式应用程序的启动。