2016-08-23 2 views
1

я разработал application client на Java и он работает нормально по Glassfish ..Class-Path линия слишком долго

Но после переезда в 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"}}

Я ожидаю, что ошибка связана с длинной строкой Class-Path в файле Manifest.mf.

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 

Можно ли загрузить все банки внутри папки без ввода этой длинной строки? или Как избежать этого сообщения об ошибке?

+1

Возможный дубликат [Установка нескольких банок в Java классам] (http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath) – Tom

+0

ли вы завершите линию правильно? –

+0

@ Это не дубликат предоставленной вами ссылки. Это проблема переноса строк в записи 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' с' appclient.sh' для 'wildfly'? – Jason4Ever

+0

@ Jason4Ever Извините, я не знаю _appclient.sh для wildfly_. Создан ли этот файл? Как и @Steve C, обычно мы не пишем это вручную, но оно генерируется. Моя альтернатива 'java -cp lib/* 'предназначена для консоли (cmd, bash, terminal и т. Д.). –

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 Maven-тень-плагин \t \t \t \t 2.3 \t \t \t \t <конфигурация> /Главная/Проект/Библиотека/ \t \t \t \t \t \t ' – Jason4Ever