【问题标题】:Getting an Illegal Argument Exception/Runtime Exception when using Jetty in Eclipse在 Eclipse 中使用 Jetty 时获取非法参数异常/运行时异常
【发布时间】:2020-06-10 03:01:52
【问题描述】:

我知道这可能很难回答,但我已经尝试了所有方法,但无法找到解决方案。我第一次尝试使用 Eclipse、Jetty 和 JSF 在 Java 中创建一个 Web 项目,并且在我引入 Java 类之前一切正常。我用 HTMl/XHTML 编写并运行程序,但是当我添加一个 Java 类时——即使类中没有任何内容,我也会遇到以下异常:

java.lang.RuntimeException: Error scanning file C:\Users\****\eclipse-workspace\donationFinder\target\classes\com\testingClass\Test.class
    at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:783)
    at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:876)
    at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:165)
    at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:552)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: 
java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:986)
    at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:777)
    at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:876)
    at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:165)
    at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:552)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.base/java.lang.Thread.run(Thread.java:835)

有谁知道这可能是什么原因造成的?提前致谢。

【问题讨论】:

  • 所以如果你在 Eclipse 之外运行它可以工作吗?您的问题与 JSF 无关
  • @Kukeltje 如何在 Eclipse 之外运行它?
  • 不知道,因为我不使用码头,但很可能有一个启动和停止脚本。我问如果你在eclipse之外运行它是否不起作用的原因,问题与eclipse无关
  • 您的项目的 Java 合规性设置是什么?这是 Jetty 的版本?
  • 这并没有告诉我们您的项目的合规性设置来自哪个执行环境,但 Jetty 版本现在最高为 9.4.29.v20200521,并且包含 asm- 7.3.jar,它更有可能读取这些类文件。

标签: eclipse jetty


【解决方案1】:

您使用的 asm 版本对于您的 JVM 运行时来说太旧了。

对于 Jetty 9.4.x,如果您想扫描为 Java 8 到 Java 13 生成的字节码,您应该(至少)使用asm-7.1.jar

如果您想扫描为 Java 8 到 14 生成的字节码,请使用 asm-7.2.jar

如果您想扫描为 Java 8 到 15 生成的字节码,请使用 asm-7.3.1.jar

详情请查看之前的答案。

https://stackoverflow.com/a/26496604/775715

【讨论】:

  • 不幸的是,这不起作用(我安装了 asm 7.2,然后安装了 asm 8.0,但都没有工作)。还有什么建议吗?
  • Jetty 9.x 不支持 asm 8.0(由于 asm 上的 API 更改) - 如果您使用 Java 15 进行构建,那么使用 asm 7.2 会产生您看到的错误。跨度>
  • 哦,有道理。非常感谢您的帮助,但我似乎找不到 org.objectweb.asm_7.3.1 的下载。你知道我在哪里可以找到它吗?
  • 使用 maven(或任何其他支持全局 java 存储库系统的构建工具)。所有提到的 ASM 版本都存在于全局 Java 存储库系统中。额外的好处是,您也不会像您正在苦苦挣扎的那样使用错误/不匹配的版本陷入这些情况。
  • 我将现有项目配置为 maven 项目,将 asm 7.3.1 的依赖项添加到 pom,并成功下载它,但我得到了同样的错误。我应该通过 Maven 或类似的东西运行整个项目吗?我真的很难过。抱歉这么久了
猜你喜欢
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
相关资源
最近更新 更多