如何在Jetty类路径中将jar放入jetty / lib? [英] How do I place jars in jetty/lib on the jetty classpath?

查看:126
本文介绍了如何在Jetty类路径中将jar放入jetty / lib?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有Jetty jetty-9.2.3.v20140905



我的理解是lib / jar或lib / ext中的jar自动出现在类路径中,但这可能是来自jetty 8的旧行为。



我正在尝试使用websockets部署webapp。随着我在webapps目录中部署的WAR文件,jetty一直在抱怨它找不到位于jetty / lib目录中的jar(jetty-http,jetty-io,jetty-security,jetty-server,jetty-servlet,jetty- util是我的webapp所需要的,它无法找到)



当我执行--module-ext

如何解决这个问题?



要解决以下问题,(编辑原始问题)我试过启用服务器模块,其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 = serv er jetty.port = 8182 

,结果是:

  2014-10-30 15:26:13.907:警告:oejuc.AbstractLifeCycle:main:FAILED 
org.eclipse.jetty.annotations.ServletContainerInitializersStarter@2635068e:
java.lang.NoClassDefFoundError:org / eclipse / jetty / server / Handler
java.lang.NoClassDefFoundError:org / eclipse / jetty / server / Handler

org.eclipse.jetty.server.Handler就在jetty-server jar中,位于我的jetty / lib目录中。



也许jetty.version或jetty.base变量不正确?



当我执行

 时 -  list-classpath 

我确实看到了lib目录中的所有jar。

解决方案

你在阅读什么文件? (请链接)



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 取决于您在jetty实例配置中启用的模块。



要了解启动,请启动.jar ,命令行,模块,库,xml配置,配置属性, {jetty.base} {jetty-dir} {jetty.home} ,请参阅
的启动文档 http://www.eclipse.org/jetty/documentation/current/startup.html



关于启动jetty和webapps的具体问题。
(同样,这些都记录在上面的启动文档URL中)



这是一个使用<$ c的快速示例$ c> {jetty.home} 本身(不推荐使用,但有效):

 #解压配件
[〜] $ unzip jetty-distribution-9.2.3.v20140905
[〜] $ cd jetty-distribution-9.2.3.v20140905

#将战争复制到位
[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}

 #解压缩发行版
[〜] $ unzip jetty-distribution-9.2.3.v20140905

#制作一个{jetty.base}目录来存放你的配置
[〜] $ mkdir myappbase
[〜] $ cd myappbase

#由于这是一个新的{码头.base},让我们初始化它
[myappbase] $ java -jar ../jetty-distribution-9.2.3.v20140905/start.jar \
--add-to-start = http, logging,deploy,jsp,ext,resources
INFO:http初始化为$ {jetty.base} /start.ini(追加)
INFO:服务器初始化为$ {jetty.base} /start.ini (追加)
INFO:初始化在$ {jetty.base} /start.ini中的日志记录(追加)
MKDIR:$ {jetty.base} / logs
INFO:部署初始化$ { jetty.base} /start.ini(追加)
MKDIR:$ {jetty.base} / webapps
...(剪辑)...
MKDIR:$ {jetty.base} / lib
MKDIR:$ {jetty.base} / lib / ext
INFO:资源初始化为$ {jetty.base} /start.ini(追加)
MKDIR:$ {jetty。 base} / resources

#让我们看看我们现在有什么
[myappbase] $ ls -F
lib / logs / resources / start.ini webapps /

#将你的webapp复制到位
[myappbase] $ cp~ / Projects / mywebapp.war webapps /

#运行Jetty
[myappbase] $ java -jar。 ./ jetty-distribution-9.2.3.v20140905 / start.jar


I have Jetty jetty-9.2.3.v20140905

My understanding was that jars in lib/jar or lib/ext were automatically on the classpath, but this may have been old behavior from jetty 8.

I'm trying to deploy a webapp with websockets. With my deployed WAR file in the webapps directory, jetty keeps complaining that it cannot find jars sitting right there in the jetty/lib directory (jetty-http, jetty-io, jetty-security, jetty-server, jetty-servlet, jetty-util are the ones my webapp needs that it cannot find)

jars placed in lib/ext are also not picked up when I do a --module-ext

How can I resolve this?

To address the answer below, (editing the original questioN) I have tried enabling the server module, whose server.mod file contains the following lines:

[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

From the command line, I do

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

and the result is:

2014-10-30 15:26:13.907:WARN:oejuc.AbstractLifeCycle:main: FAILED   
org.eclipse.jetty.annotations.ServletContainerInitializersStarter@2635068e: 
java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Handler
java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Handler

org.eclipse.jetty.server.Handler is right there in jetty-server jar sitting in my jetty/lib directory.

Perhaps the jetty.version or jetty.base variables are incorrect?

When I perform a

--list-classpath

I do see all the jars in the lib directory there.

解决方案

What documentation are you reading? (link please)

The whole concept of a start.config only exists in Jetty 8 and earlier.

Current documentation is at http://www.eclipse.org/jetty/documentation/current/

That text is not valid for Jetty 9.2.3.v20140905

There is never a good reason to have ALL of the jars in lib/ in the server classpath at the same time. In fact it would result in an invalid environment, as there are different implementations of several core technologies that you can change (such as jsp, jstl, and javax.el). There are also libraries present in lib/ that require 3rd party optional libraries to function (like npn, alpn), which require you to acknowledge a license before they are downloaded.

What libraries are loaded, from either {jetty.home}/lib and/or {jetty.base}/lib are determined by what modules you have enabled in your jetty instance configuration.

To learn about startup, start.jar, command line, modules, libs, xml configuration, configuration properties, {jetty.base}, {jetty-dir}, and {jetty.home}, see the "Startup Documentation" at http://www.eclipse.org/jetty/documentation/current/startup.html

To address your specific question about starting jetty and webapps. (Again, this is all documented in the "Startup Documentation" URL above)

Here's a quick example using {jetty.home} itself (not recommended anymore, but works):

# 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

Now for the more appropriate way, using a {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

这篇关于如何在Jetty类路径中将jar放入jetty / lib?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆