【问题标题】:Jetty runtime error only in intelijj IDEAJetty 运行时错误仅在 intellij IDEA 中
【发布时间】:2017-11-24 19:06:41
【问题描述】:

我有一个 Maven 项目。其中一个模块是战争模块,我尝试从码头(码头:运行)开始。 当我使用 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$1.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$1.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-Service not available。

谁能告诉我为什么会出现这个错误,以及为什么在 Netbeans 中我运行 jetty 没有问题。

【问题讨论】:

  • 只是一个旁注:Jetty 6 是一个非常古老的版本。你最近没试过吗?
  • 您可能在 IDE 之间使用不同的 java 版本
  • 失败是在parseAnnotations,你能分享一些你认为可能是问题的注释吗?
  • 据我所知,Jetty 9 似乎有一些修复/更改可以在 JDK 9 上运行。他们的问题跟踪器中有几个关于这个主题的问题。
  • 最后我记得,我在 Jetty 项目中看到了一个跟踪器,用于将 Java9 兼容的更改反向移植到 Jetty 9.3。我非常怀疑 Jetty6 是否也兼容。我有时会回复similar question。今天更新了。(感谢提醒。)

标签: java maven embedded-jetty java-9


【解决方案1】:

代码是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+。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    相关资源
    最近更新 更多