使用 maven jetty 插件在 java 8 上运行 jetty 9 时获取错误扫描文件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22806946/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Getting Error scanning file when running jetty 9 on java 8 using the maven jetty plugin
提问by tarrsalah
I'm running a trivial Hello World
web application using servlet-3.1, jetty-9running on jdk-8and using the maven-jetty-plugin
.
我正在Hello World
使用servlet-3.1、jetty-9在jdk-8上运行并使用maven-jetty-plugin
.
public class HelloWorldServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
String message = "Hello Jetty From the HelloWorldServlet";
OutputStream stream = response.getOutputStream();
stream.write(message.getBytes());
stream.flush();
} catch (IOException ex) {
Logger.getLogger(HelloWorldServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}
And well mapped in the web.xml
file:
并很好地映射到web.xml
文件中:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>org.tarrsalah.jetty.example.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
But it seems that jetty can't fin my servlet class when running mvn jetty:run , what am I missing here ?
但是在运行 mvn jetty:run 时,jetty 似乎无法找到我的 servlet 类,我在这里错过了什么?
--- jetty-maven-plugin:9.1.3.v20140225:run (default-cli) @ jetty-example ---
2014-04-02 10:09:46.126:INFO::main: Logging initialized @12796ms
Configuring Jetty for project: jetty-example
webAppSourceDirectory not set. Trying src/main/webapp
Reload Mechanic: automatic
Classes = /home/tarrsalah/src/misc/jetty-exampe/target/classes
Context path = /
Tmp directory = /home/tarrsalah/src/misc/jetty-exampe/target/tmp
Web defaults = org/eclipse/jetty/webapp/webdefault.xml
Web overrides = none
web.xml file = file:/home/tarrsalah/src/misc/jetty-exampe/src/main/webapp/WEB-INF/web.xml
Webapp directory = /home/tarrsalah/src/misc/jetty-exampe/src/main/webapp
2014-04-02 10:09:46.291:INFO:oejs.Server:main: jetty-9.1.3.v20140225
2014-04-02 10:09:46.954:INFO:oeja.AnnotationConfiguration:main: Scanned 1 container path jars, 0 WEB-INF/lib jars, 1 WEB-INF/classes dirs in 82ms for context o.e.j.m.p.JettyWebAppContext@1f38957{/,file:/home/tarrsalah/src/misc/jetty-exampe/src/main/webapp/,STARTING}{file:/home/tarrsalah/src/misc/jetty-exampe/src/main/webapp/}
2014-04-02 10:09:46.954:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.m.p.JettyWebAppContext@1f38957{/,file:/home/tarrsalah/src/misc/jetty-exampe/src/main/webapp/,STARTING}{file:/home/tarrsalah/src/misc/jetty-exampe/src/main/webapp/}
java.lang.RuntimeException: Error scanning file HelloWorldServlet.class
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:705)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:821)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:159)
at org.eclipse.jetty.annotations.AnnotationConfiguration.run(AnnotationConfiguration.java:542)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Thread.java:744)
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:970)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:700)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686)
at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:821)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:159)
at org.eclipse.jetty.annotations.AnnotationConfiguration.run(AnnotationConfiguration.java:542)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Thread.java:744)
2014-04-02 10:09:46.958:WARN:oejsh.RequestLogHandler:main: !RequestLog
2014-04-02 10:09:47.108:INFO:oejs.ServerConnector:main: Started ServerConnector@506594a5{HTTP/1.1}{0.0.0.0:8080}
2014-04-02 10:09:47.109:INFO:oejs.Server:main: Started @13779ms
Started Jetty Server
pom.xml
pom.xml
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.1.3.v20140225</version>
</plugin>
Update:
更新:
Worked after changing the configuration of maven-compiler-plugin
from 1.8 to 1.7, What'is wrong with using java-8with jetty-9?
在将配置maven-compiler-plugin
从 1.8更改为 1.7 后工作,将java-8与jetty-9一起使用有什么问题?
回答by KarsB
To make this work, you have to add ASM 5 to the dependencies of the jetty-maven-plugin for the time being
为了使这个工作,你必须暂时将 ASM 5 添加到 jetty-maven-plugin 的依赖项中
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
<version>5.0.2</version>
</dependency>
</dependencies>
</plugin>
回答by Rick Li
check this
检查这个
http://vaskoz.wordpress.com/2013/12/18/fix-jetty-9-1-for-jdk8-annotations/
http://vaskoz.wordpress.com/2013/12/18/fix-jetty-9-1-for-jdk8-annotations/
Jetty 9.1.0 comes bundled with ASM 4.1 but running with bytecode level 1.8 and annotations causes the following error: java.lang.RuntimeException: Error scanning file PingController.class at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:705)
Jetty 9.1.0 与 ASM 4.1 捆绑在一起,但使用字节码级别 1.8 和注释运行会导致以下错误:java.lang.RuntimeException: Error scan file PingController.class at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java :705)