如何在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时,放在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
从命令行,我做
java -jar start.jar --module=server jetty.port=8182
结果是:
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就在我的jetty / lib目录下的jetty-server jar中。
也许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/
中包含所有 jar。 实际上,它会导致无效的环境,因为您可以更改几种核心技术的不同实现(例如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
现在以更合适的方式,使用{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