2016-08-23 96 views
1

我在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文件,而無需輸入此長行?或如何避免此錯誤訊息?

+1

[設定在Java類路徑多瓶(http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath) – Tom

+0

做了可能重複:除了用命令行參數啓動你正確包裝線? –

+0

@Tom這不是你提供的鏈接的重複。這是Manifest.mf'Class-Path'條目中的換行問題。 –

回答

3

清單文件不能包含超過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 
+0

通常的策略是讓您的構建工具爲您生成此條目。我知道Maven可以做到這一點。 –

+0

如何使用'java -cp'作爲'wildfly'的'appclient.sh'? – Jason4Ever

+0

@ Jason4Ever對不起,我不知道_appclient.sh wildfly_。這個文件是否生成?正如@Steve C所發佈的,通常我們不會手動寫這個,但它會生成。我的替代'java -cp lib/*'是用於控制檯(cmd,bash,終端等)。 –

1

製作一個uber jar包含所有其他人。

+0

請爲'pom.xml'編寫一個樣本檔案? ..我嘗試過但沒有成功。 – Jason4Ever

+0

' \t \t \t \t \t \t \t \t \t org.apache.maven.plugins \t \t \t \t 行家遮陽簾插件 \t \t \t \t 2。3 \t \t \t \t <結構> /家庭/項目/ LIB/ \t \t \t \t \t \t' – Jason4Ever