当前位置: 首页 > 面试题库 >

如何在jarty类路径上的jarty / lib中放置jars?

濮阳旭东
2023-03-14
问题内容

我有Jetty jetty-9.2.3.v20140905

我的理解是lib / jar或lib / ext中的jar会自动放在类路径中,但这可能是码头8的旧行为。

我正在尝试使用websockets部署一个webapp。有了我在webapps目录中部署的WAR文件,jetty一直抱怨说,它无法在jetty /
lib目录(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服务器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

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

{jetty.home}/lib或从中加载什么库,和/或{jetty.base}/lib由您在码头实例配置中启用的模块决定。

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

解决您有关启动码头和网络应用程序的特定问题。 (同样,所有这些都记录在上面的“启动文档” 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代理,它将借助asm-4来检测代码。现在,我陷入了一个非常基本的问题,javaagent的类加载器看不到asm依赖关系,因此失败。我是否必须提供一个jar- with- dependencies(又名maven构建插件),其中包含代理所需的所有类,或者是否有另一种方法可将类添加到Java代理?直接在类路径中引用jar asm-all.jar并没有帮助。最初,构

  • 问题内容: 我有很多jar文件要添加到我的类路径中,因此,每次编译Java文件时,都会得到如下命令: 我尝试使用: 然后: 但是根本没有添加jar:由于缺少jar,我得到了错误信息…谢谢 问题答案: 也许您想尝试使用Maven来构建您的应用程序?它真的很容易设置,并且消除了依赖管理的所有问题。 同样从Java 6开始,您可以在类路径中使用通配符: set CLASSPATH = my_libs \

  • 问题内容: 有人可以告诉我在NetBeans中在哪里以及如何设置类路径吗?我想添加一个.jar文件。 问题答案: 用鼠标右键单击你的项目。 选择Properties。 在左侧单击Libraries。 下Compile tab-单击Add Jar/Folder按钮。 要么 扩展你的项目。 右键单击Libraries。 选择Add Jar/Folder。

  • 问题内容: 我的Java应用程序使用的库需要在类路径中查找文件(log4j.xml)。我使用netbeans管理我的项目,但是找不到包含lib /文件夹的方法。 Netbeans会在应用程序jar中自动创建一个MANIFEST.MF文件,并还会创建一个名为lib /的文件夹,其中包含所有依赖项。该清单指定了Class-Path属性,该属性将覆盖命令行上提供的任何- cp参数。我可以在netbean

  • 我创建laravel项目,在我的本地Windows电脑上工作良好。一旦我上传到Centos7服务器(通过SSH),我的所有路由都不工作。我试图通过行动修复,例如清除缓存,删除供应商文件夹和重做安装作曲家,但没有任何帮助。我从下面的日志中抓取。 [2018-12-20 13:09:17]本地的。错误:逻辑异常:无法为序列化准备路由[api/user]。在 /var/www/html/srp/vend

  • 我在Ubuntu 14.04上,我一直在尝试所有可能的方法来安装Laravel,但都没有用。所有我尝试的错误消息。我现在正在尝试quickstart文档中的第一种方法,即通过Laravel安装程序,但它说“确保将目录放置在