gpt4 book ai didi

java - 如何将 jar 放在 jetty 类路径的 jetty/lib 中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:20:18 26 4
gpt4 key购买 nike

我有 Jetty jetty-9.2.3.v20140905

我的理解是 lib/jar 或 lib/ext 中的 jars 自动位于类路径中,但这可能是 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 目录中的所有 jars。

最佳答案

您正在阅读哪些文档? (请链接)

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

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

该文本对 Jetty 9.2.3.v20140905 无效

ALL 服务器类路径中的 lib/ 中的 jar 包是没有充分理由的。事实上,它会导致无效的环境,因为您可以更改几种核心技术的不同实现(例如 jsp、jSTL 和 javax.el)。 lib/ 中还有一些库需要第 3 方可选库才能运行(如 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

关于java - 如何将 jar 放在 jetty 类路径的 jetty/lib 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com