使用 --add-to-start 运行时,Jetty 抛出“未知模块”错误

问题描述 投票:0回答:2

我正在尝试配置 Jetty 并面临这个问题:

root@jans-dev:~/jetty-base# java -jar $JETTY_HOME/start.jar --add-to-start=http,deploy
ERROR : Unknown module='http'. List available with --list-modules

Usage: java -jar $JETTY_HOME/start.jar [options] [properties] [configs]
       java -jar $JETTY_HOME/start.jar --help  # for more information

背景

  • Jetty 9.4 使用
    root
     在 Ubuntu 上的 
    lxc
     容器上安装为 
    sudo apt install jetty9
  • Jetty 服务正在运行,我可以访问默认登陆页面
  • 码头主页设置为
    export JETTY_HOME=/usr/share/jetty
  • 码头基地设置为
    export JETTY_BASE=/root/jetty-base

在尝试添加模块之前,我已成功执行以下命令。

root@jans-dev:~/jetty-base# java -jar $JETTY_HOME/start.jar --create-startd
MKDIR : ${jetty.base}/start.d
INFO  : Base directory was modified

另外,当我运行

--list-modules
时,它是空的:

root@jans-dev:~/jetty-base# java -jar $JETTY_HOME/start.jar --list-modules

Available Modules:
==================
tags: [-internal]

Enabled Modules:
================
root@jans-dev:~/jetty-base# 

我不确定我在这里错过了什么。如何使模块可供 Jetty 使用?我也检查了这个参考

jetty jetty-9
2个回答
1
投票

听起来你的 Linux 发行版已经破坏了 jetty 发行版。

您的

/usr/share/jetty
目录是否包含目录
etc/
lib/
modules/
?如果不是,那么这不是有效的
${jetty-home}

也许你的 Linux 发行版把 jetty-home 放在了其他地方? 但这也是无效的,因为

start.jar
应该与其他目录位于同一目录中。

正确的

${jetty.home}
是什么样子的示例...

$ ls -la jetty-home-9.4.44.v20210927
total 776
drwxr-xr-x  6 joakim joakim   4096 Sep 27 18:12 ./
drwxr-xr-x 74 joakim joakim  12288 Nov  2 15:32 ../
drwxr-xr-x  2 joakim joakim   4096 Oct  7 10:07 bin/
drwxr-xr-x  4 joakim joakim   4096 Oct 14 07:17 etc/
drwxr-xr-x 14 joakim joakim   4096 Oct  7 10:07 lib/
-rw-r--r--  1 joakim joakim  30012 Sep 27 18:12 license-eplv10-aslv20.html
drwxr-xr-x 22 joakim joakim   4096 Oct  7 10:07 modules/
-rw-r--r--  1 joakim joakim   6262 Sep 27 18:12 notice.html
-rw-r--r--  1 joakim joakim 163958 Sep 27 18:10 start.jar
-rw-r--r--  1 joakim joakim 550572 Sep 27 17:44 VERSION.txt

过去,有一些 Linux 发行版尝试将各种 Jetty 库(

${jetty.home}/lib/
中的 jar 文件)作为单独的依赖项放入其发行版设置中,但这对于像 Jetty 这样的模块化 Servlet/Web 容器来说不是有效的设置。大多数发行版已经意识到这一点,并且现在已经恢复到正常的设置。

最快的修复方法是从您的 Linux 发行版中删除这个错误的 Jetty 软件包,然后下载并使用官方 tarball。

https://search.maven.org/artifact/org.eclipse.jetty/jetty-home

https://www.eclipse.org/jetty/download.php


0
投票

我在 ubuntu 22.04 上也有同样的问题,但如果我在运行命令之前先进入 JETTY_HOME 文件夹,它确实可以工作:

pushd $JETTY_HOME
java -jar $JETTY_HOME/start.jar --list-modules
© www.soinside.com 2019 - 2024. All rights reserved.