2014-10-30 2 views
7

У меня есть Причал Причал-9.2.3.v20140905Как разместить банки в причале/lib на причале classpath?

Насколько я понимаю, что банки в Lib/банку или Lib/внутр были автоматически на пути к классам, но это может быть старое поведение от причала 8.

Я пытаюсь развернуть webapp с websockets. С моим развернутым файлом WAR в каталоге webapps пристань жалуется на то, что он не может найти банки, расположенные прямо там, в каталоге jetty/lib (jetty-http, jetty-io, jetty-security, jetty-server, jetty-servlet, Util являются те, моя WebApp нуждается в том, что он не может найти)

банки помещают в Lib/внутр также не взял, когда я делаю --module-вн

Как я могу решить эту проблему?

Для решения ответа ниже, (редактирования оригинального вопросительным) Я попытался включением модуля сервера, чей файл server.mod содержит следующие строки:

[lib] 
lib/servlet-api-3.1.jar 
lib/jetty-schemas-3.1.jar 
lib/jetty-http-${jetty.version}.jar 
lib/jetty-server-${jetty.version}.jar 
lib/jetty-xml-${jetty.version}.jar 
lib/jetty-util-${jetty.version}.jar 
lib/jetty-io-${jetty.version}.jar 

из командной строки, я

java -jar start.jar --module=server jetty.port=8182 

и результат:

2014-10-30 15:26:13.907:WARN:oejuc.AbstractLifeCycle:main: FAILED 
or[email protected]2635068e: 
java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Handler 
java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Handler 

org.eclipse.jetty.server.Handler находится прямо в банке Jetty-сервера, сидящей в моем каталоге jetty/lib.

Возможно, переменные jetty.version или jetty.base неверны?

Когда я выполнить

--list-classpath 

Я вижу все банки в Lib каталога там.

ответ

8

Какой документ вы читаете? (link please)

Вся концепция start.config существует только в Jetty 8 и ранее.

Текущая документация на http://www.eclipse.org/jetty/documentation/current/

Этого текст не является допустимым для Jetty 9.2.3.v20140905

Там никогда не хорошая причина, чтобы иметь ВСЕ из баночек в lib/ в серверных классах одновременно. На самом деле это приведет к недопустимой среде, так как существуют различные реализации нескольких основных технологий, которые вы можете изменить (например, jsp, jstl и javax.el). Существуют также библиотеки, присутствующие в lib/, для которых требуются сторонние дополнительные библиотеки (например, npn, alpn), которые требуют подтверждения лицензии до их загрузки.

Какие библиотеки загружены из {jetty.home}/lib и/или {jetty.base}/lib, определяются тем, какие модули были включены в конфигурацию экземпляра вашего пристани.

Чтобы узнать о запуске, начните.баночка, командная строка, модули, ЛИЭС, конфигурации XML, свойство конфигурации, {jetty.base}, {jetty-dir} и {jetty.home} см «Автозагрузка документации» на http://www.eclipse.org/jetty/documentation/current/startup.html

Для решения вашего конкретного вопроса о запуске причала и WebApps. (Опять же, это все документировано в «Startup документации» URL выше)

Вот краткий пример использования {jetty.home} себя (не рекомендуется больше, но работает):

# Unpack the distribution 
[~]$ unzip jetty-distribution-9.2.3.v20140905 
[~]$ cd jetty-distribution-9.2.3.v20140905 

# Copy your war into place 
[jetty-distribution-9.2.3.v20140905]$ cp ~/Projects/mywebapp.war webapps/ 

# Run Jetty 
[jetty-distribution-9.2.3.v20140905]$ java -jar start.jar 

Теперь для более подходящим способом, не используя {jetty.base}:

# Unpack the distribution 
[~]$ unzip jetty-distribution-9.2.3.v20140905 

# Make a {jetty.base} directory to house your configuration 
[~]$ mkdir myappbase 
[~]$ cd myappbase 

# Since this is a new {jetty.base}, lets initialize it 
[myappbase]$ java -jar ../jetty-distribution-9.2.3.v20140905/start.jar \ 
    --add-to-start=http,logging,deploy,jsp,ext,resources 
INFO: http   initialised in ${jetty.base}/start.ini (appended) 
INFO: server   initialised in ${jetty.base}/start.ini (appended) 
INFO: logging   initialised in ${jetty.base}/start.ini (appended) 
MKDIR: ${jetty.base}/logs 
INFO: deploy   initialised in ${jetty.base}/start.ini (appended) 
MKDIR: ${jetty.base}/webapps 
...(snip)... 
MKDIR: ${jetty.base}/lib 
MKDIR: ${jetty.base}/lib/ext 
INFO: resources  initialised in ${jetty.base}/start.ini (appended) 
MKDIR: ${jetty.base}/resources 

# Lets see what we have now 
[myappbase]$ ls -F 
lib/ logs/ resources/ start.ini webapps/ 

# Copy your webapp into place 
[myappbase]$ cp ~/Projects/mywebapp.war webapps/ 

# Run Jetty 
[myappbase]$ java -jar ../jetty-distribution-9.2.3.v20140905/start.jar 
+0

Я предполагаю, что текст был от Jetty 8. – user2197116

+0

Я предполагаю, что текст был от Jetty 8.Is это уже не дело что все в jetty.home/lib находится на пути к классу? Что мне нужно сделать, чтобы каждый lib в каталоге jetty.home/lib находился на пути к классу? Чтение документации, я скопировал все из lib в ext и сделал --module = ext из командной строки при запуске причала, который не работал. Я также пробовал --module = http и --module = server, ни один из которых не имел никакого эффекта. Если я попытаюсь использовать классы из этих банок, причал не сможет загрузить войну, заявив, что не может найти классы. – user2197116

+1

Не существует веской причины для того, чтобы все банки в '{jetty.home}/lib /' находились в пути к классу сервера. И заставить его ничего не добьется. Обновите свой вопрос, чтобы уточнить, какую цель вы пытаетесь достичь, например «Я хочу развернуть webapp с помощью jsps и websockets». –

Смежные вопросы