如何在Jetty类路径中将jar放入jetty/lib?

use*_*116 7 java jetty classpath

我有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时,放在lib/ext中的jar也没有被拾取

我该如何解决这个问题?

为了解决下面的答案,(编辑原始问题)我尝试启用服务器模块,其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
Run Code Online (Sandbox Code Playgroud)

从命令行,我做

java -jar start.jar --module=server jetty.port=8182
Run Code Online (Sandbox Code Playgroud)

结果是:

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
Run Code Online (Sandbox Code Playgroud)

org.eclipse.jetty.server.Handler就在jetty-server jar中,坐在我的jetty/lib目录下.

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

当我表演时

--list-classpath
Run Code Online (Sandbox Code Playgroud)

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

Joa*_*elt 8

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

整个概念start.config只存在于Jetty 8及更早版本中.

当前文档位于http://www.eclipse.org/jetty/documentation/current/

该文本对Jetty无效 9.2.3.v20140905

没有充分的理由同时在服务器类路径中包含所有 jar lib/.实际上,它会导致无效的环境,因为您可以更改几种核心技术的不同实现(例如jsp,jstl和javax.el).还有一些库lib/需要第三方可选库才能运行(如npn,alpn),这需要您在下载许可证之前确认许可证.

从哪个库加载{jetty.home}/lib和/或{jetty.base}/lib由您在jetty实例配置中启用的模块确定的库.

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

解决有关启动jetty和webapps的特定问题. (同样,这些都记录在上面的"启动文档"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
Run Code Online (Sandbox Code Playgroud)

现在以更合适的方式,使用{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
Run Code Online (Sandbox Code Playgroud)