Class-路径行太长
Class-Path line too long
我 Java 开发了 application client
而 Glassfish
通常是 运行 ..
但是在移动到 Wildfly
之后..我遇到了这个错误:
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYSRV0161: Failed to get manifest for deployment \"/content/Application.jar\"
Caused by: java.io.IOException: line too long"}}
我预计错误是因为 Manifest.mf
文件中的 Class-Path
行太长。
Class-Path: ../lib/jaybird-2.1.6.jar ../lib/rtfparserkit-1.6.0.jar ../lib/jug-lgpl-2.0.0.jar ../lib/mysql-connector-java-5.1.37-bin.jar ../lib/trilead-ssh2-build213.jar ../lib/wsdl4j-1.6.2.jar ../lib/wsdl4j-qname-1.6.1.jar ../lib/xmlbeans-2.6.0.jar ../lib/poi-3.11-20141221.jar ../lib/poi-ooxml-3.11-20141221.jar ../lib/poi-ooxml-schemas-3.11-20141221.jar ../lib/jersey-apache-client-1.16.jar ../lib/jersey-bundle-1.16.jar ../lib/jersey-core-1.16.jar ../lib/jersey-client-1.16.jar ../lib/jackson-core-asl-1.9.13.jar ../lib/jackson-mapper-asl-1.9.2.jar ../lib/js-14.jar ../lib/drools-core-5.0.1.jar ../lib/activemq-all-5.10.0.jar ../lib/json-simple-1.1.1.jar ../lib/commons-io-2.4.jar ../lib/javassist.jar ../lib/scannotation-1.0.2.jar ../lib/j-text-utils-0.3.3.jar ../lib/commons-lang-2.6.jar ../lib/commons-net-3.3.jar ../lib/opencsv-2.4.jar ../lib/gson-2.2.4.jar ../lib/httpclient-4.3.5.jar ../lib/commons-vfs-20100924-pentaho.jar ../lib/log4j-1.2.17.jar ../lib/commons-logging-1.1.3.jar ../lib/spring-core-3.1.4.RELEASE.jar ../lib/commons-digester-2.1.jar ../lib/commons-beanutils-1.9.2.jar ../lib/ognl-2.7.3.jar ../lib/jxl-2.6.3.jar ../lib/metastore-5.0.1.jar ../lib/edtftpj-2.1.0.jar ../lib/kettle5-log4j-plugin-5.1.0.0-752.jar ../lib/kettle-db-4.4.0-stable.jar ../lib/janino-2.5.16.jar ../lib/commons-compiler-2.7.8.jar
有没有其他方法可以在不键入这一长行的情况下将所有 jar 加载到文件夹中?或如何避免此错误消息?
创建一个包含所有其他内容的 uber jar。
清单文件不得包含超过 72 字节的行。
您必须在恰好 72 个字节后换行。
Class-Path: ../lib/jaybird-2.1.6.jar ../lib/rtfparserkit-1.6.0.jar ../l
ib/jug-lgpl-2.0.0.jar ../lib/mysql-connector-java-5.1.37-bin.jar ../li
b/trilead-ssh2-build213.jar ../lib/wsdl4j-1.6.2.jar ../lib/wsdl4j-qnam
e-1.6.1.jar ...
在规范中寻找行长度:
http://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#JAR_Manifest
备选方案: 不要在清单中使用类路径。而是从命令行参数开始:
java -cp lib/* mainclass
FWIW:经过一段时间寻找此问题的解决方案后,我终于找到了可行的方法。我在 Windows 10
和 java 1.8.0_241
以及 Linux Mint 19.1
和 java 1.8.0_241
上都成功测试了它
请注意,"Class-path:"
行之后的每个类路径条目都缩进了 2 个空格,尽管这可能不是必需的。这是我的 MANIFEST.MF
文件:
Manifest-Version: 1.0
Scala-Compiler-Version: 2.12.10
Main-Class: Main
Class-Path: /opt/uejlib2.12/vastblue_2.12.jar
/opt/uejlib2.12/apps_2.12.jar
/opt/uejlib2.12/scala-reflect.jar
/opt/uejlib2.12/scala-library.jar
/opt/uejlib2.12/better-files_2.12-3.8.0.jar
/opt/uejlib2.12/scala-collection-compat_2.12-2.1.3.jar
/opt/uejlib2.12/chronoscala_2.12-0.3.2.jar
/opt/uejlib2.12/sfm-csv-8.2.1.jar
/opt/uejlib2.12/sfm-map-8.2.1.jar
/opt/uejlib2.12/lightning-csv-8.2.1.jar
/opt/uejlib2.12/sfm-tuples-8.2.1.jar
/opt/uejlib2.12/sfm-reflect-8.2.1.jar
/opt/uejlib2.12/sfm-converter-8.2.1.jar
/opt/uejlib2.12/sfm-util-8.2.1.jar
我 Java 开发了 application client
而 Glassfish
通常是 运行 ..
但是在移动到 Wildfly
之后..我遇到了这个错误:
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYSRV0161: Failed to get manifest for deployment \"/content/Application.jar\"
Caused by: java.io.IOException: line too long"}}
我预计错误是因为 Manifest.mf
文件中的 Class-Path
行太长。
Class-Path: ../lib/jaybird-2.1.6.jar ../lib/rtfparserkit-1.6.0.jar ../lib/jug-lgpl-2.0.0.jar ../lib/mysql-connector-java-5.1.37-bin.jar ../lib/trilead-ssh2-build213.jar ../lib/wsdl4j-1.6.2.jar ../lib/wsdl4j-qname-1.6.1.jar ../lib/xmlbeans-2.6.0.jar ../lib/poi-3.11-20141221.jar ../lib/poi-ooxml-3.11-20141221.jar ../lib/poi-ooxml-schemas-3.11-20141221.jar ../lib/jersey-apache-client-1.16.jar ../lib/jersey-bundle-1.16.jar ../lib/jersey-core-1.16.jar ../lib/jersey-client-1.16.jar ../lib/jackson-core-asl-1.9.13.jar ../lib/jackson-mapper-asl-1.9.2.jar ../lib/js-14.jar ../lib/drools-core-5.0.1.jar ../lib/activemq-all-5.10.0.jar ../lib/json-simple-1.1.1.jar ../lib/commons-io-2.4.jar ../lib/javassist.jar ../lib/scannotation-1.0.2.jar ../lib/j-text-utils-0.3.3.jar ../lib/commons-lang-2.6.jar ../lib/commons-net-3.3.jar ../lib/opencsv-2.4.jar ../lib/gson-2.2.4.jar ../lib/httpclient-4.3.5.jar ../lib/commons-vfs-20100924-pentaho.jar ../lib/log4j-1.2.17.jar ../lib/commons-logging-1.1.3.jar ../lib/spring-core-3.1.4.RELEASE.jar ../lib/commons-digester-2.1.jar ../lib/commons-beanutils-1.9.2.jar ../lib/ognl-2.7.3.jar ../lib/jxl-2.6.3.jar ../lib/metastore-5.0.1.jar ../lib/edtftpj-2.1.0.jar ../lib/kettle5-log4j-plugin-5.1.0.0-752.jar ../lib/kettle-db-4.4.0-stable.jar ../lib/janino-2.5.16.jar ../lib/commons-compiler-2.7.8.jar
有没有其他方法可以在不键入这一长行的情况下将所有 jar 加载到文件夹中?或如何避免此错误消息?
创建一个包含所有其他内容的 uber jar。
清单文件不得包含超过 72 字节的行。
您必须在恰好 72 个字节后换行。
Class-Path: ../lib/jaybird-2.1.6.jar ../lib/rtfparserkit-1.6.0.jar ../l
ib/jug-lgpl-2.0.0.jar ../lib/mysql-connector-java-5.1.37-bin.jar ../li
b/trilead-ssh2-build213.jar ../lib/wsdl4j-1.6.2.jar ../lib/wsdl4j-qnam
e-1.6.1.jar ...
在规范中寻找行长度:
http://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#JAR_Manifest
备选方案: 不要在清单中使用类路径。而是从命令行参数开始:
java -cp lib/* mainclass
FWIW:经过一段时间寻找此问题的解决方案后,我终于找到了可行的方法。我在 Windows 10
和 java 1.8.0_241
以及 Linux Mint 19.1
和 java 1.8.0_241
请注意,"Class-path:"
行之后的每个类路径条目都缩进了 2 个空格,尽管这可能不是必需的。这是我的 MANIFEST.MF
文件:
Manifest-Version: 1.0
Scala-Compiler-Version: 2.12.10
Main-Class: Main
Class-Path: /opt/uejlib2.12/vastblue_2.12.jar
/opt/uejlib2.12/apps_2.12.jar
/opt/uejlib2.12/scala-reflect.jar
/opt/uejlib2.12/scala-library.jar
/opt/uejlib2.12/better-files_2.12-3.8.0.jar
/opt/uejlib2.12/scala-collection-compat_2.12-2.1.3.jar
/opt/uejlib2.12/chronoscala_2.12-0.3.2.jar
/opt/uejlib2.12/sfm-csv-8.2.1.jar
/opt/uejlib2.12/sfm-map-8.2.1.jar
/opt/uejlib2.12/lightning-csv-8.2.1.jar
/opt/uejlib2.12/sfm-tuples-8.2.1.jar
/opt/uejlib2.12/sfm-reflect-8.2.1.jar
/opt/uejlib2.12/sfm-converter-8.2.1.jar
/opt/uejlib2.12/sfm-util-8.2.1.jar