java - Jetty运行时错误仅在intellij IDEA中

标签 java maven embedded-jetty java-9

我有一个 Maven 项目。它的模块之一是 war 模块,我尝试从 jetty (jetty:run) 启动它。 当我使用 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-服务不可用。

任何人都可以告诉我为什么会出现此错误,以及为什么在 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]);

最后一行似乎给了你异常(exception)。另外,从堆栈跟踪中可以看出您在这里使用 Java 9+。

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

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

关于java - Jetty运行时错误仅在intellij IDEA中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47478861/

相关文章:

java - 如何解析包含对象的 JSON 和没有键的 JSON 数组?

java - StaxEventItemReader 中的 ClassCastException

java - 格式化日历对象而不是日期对象?

java - 如何使 m2e-android 包含 apk 打包的 native deps?

java - Jetty EndPoint.flush(ByteBuffer b) 返回 false 时该怎么办?

java - 如何强制 dateFormat 将指定数量的字符视为有效?

maven tomcat7插件身份验证失败,禁止使用403

maven - 如何将带有密码的maven settings.xml放在源代码管理中

servlets - 带有嵌入式 Jetty 的异步 Servlet

java - CLOSE_WAIT 中的 Jetty 连接未关闭