仅在 intellij IDEA 中出现 Jetty 运行时错误

Jetty runtime error only in intelijj IDEA

我有一个 Maven 项目。它的模块之一是 war 模块,我尝试从 jetty (jetty:运行) 开始。 当我使用 Netbeans 时一切正常,但在 IntelliJ IDEA 中我遇到了奇怪的错误。

[ERROR] Failed startup of context org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@3709748f{/,file:/C:/Users/Gosia/Documents/jaxygen/jaxygen/jaxygen-api-sample/src/main/webapp/;file:/C:/Users/Gosia/Documents/jaxygen/jaxygen/jaxygen-apibrowser-style-simple/src/main/webapp/;jar:file:/C:/Users/Gosia/.m2/repository/org/jaxygen/jaxygen-apibrowser-style-simple/1.0.8-SNAPSHOT/jaxygen-apibrowser-style-simple-1.0.8-SNAPSHOT.war!/;}
java.lang.ArrayIndexOutOfBoundsException: 1
    at org.mortbay.jetty.plugin.Jetty6MavenConfiguration.parseAnnotations(Jetty6MavenConfiguration.java:119)
    at org.mortbay.jetty.plus.webapp.AbstractConfiguration.configure(AbstractConfiguration.java:119)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180)
    at org.mortbay.jetty.plus.webapp.AbstractConfiguration.configureWebApp(AbstractConfiguration.java:96)
    at org.mortbay.jetty.plus.webapp.Configuration.configureWebApp(Configuration.java:149)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1231)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:460)
    at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:124)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.plugin.AbstractJettyRunMojo.restartWebApp(AbstractJettyRunMojo.java:441)
    at org.mortbay.jetty.plugin.AbstractJettyRunMojo.filesChanged(AbstractJettyRunMojo.java:402)
    at org.mortbay.util.Scanner.reportBulkChanges(Scanner.java:486)
    at org.mortbay.util.Scanner.reportDifferences(Scanner.java:352)
    at org.mortbay.util.Scanner.scan(Scanner.java:280)
    at org.mortbay.util.Scanner.run(Scanner.java:232)
    at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
    at java.base/java.util.TimerThread.run(Timer.java:506)

在此之后服务器似乎可以正常工作,但是当启动网页时我收到 HTTP 503-服务不可用。

任何人都可以告诉我为什么会出现此错误,以及为什么在 Netbeans 中我 运行 jetty 没有问题。

密码是http://grepcode.com/file/repo1.maven.org/maven2/org.mortbay.jetty/maven-jetty-plugin/6.1.24/org/mortbay/jetty/plugin/Jetty6MavenConfiguration.java/#119

String v = System.getProperty("java.version");
String[] version = v.split("\.");
if (version==null)
{
    Log.info("Unable to determine jvm version, annotations will not be supported");
    return;
}
int  major = Integer.parseInt(version[0]);
int minor = Integer.parseInt(version[1]);

最后一行似乎是给你例外的那一行。另外,从你的堆栈跟踪可以看出你在这里使用 Java 9+。

在 Java9 中,版本格式发生了变化:现在它不是旧格式中的“1.9”,而是“9”。 Jetty 6 代码不知道这一点,假定旧格式带有一个点但失败了(因为 version 数组中只有一个元素而不是预期的 2 个)。

可能,在 Netbeans 中,您使用 JDK 8 或更低版本,正如@Hurda 推测的那样。