2014-04-02 9 views
6

Ich bin eine triviale Hello World Web-Anwendung läuft verwenden, auf läuft und die maven-jetty-plugin verwenden.Erste Fehler Scan-Datei, wenn Anlegesteg 9 auf Java läuft 8 mit dem 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); 
     } 
    } 

Und auch in der web.xml Datei zugeordnet:

<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> 

Aber es scheint, dass Anlegestelle kann beim Laufen mvn Anlegestelle nicht meine Servlet-Klasse fin: laufen, was ich hier fehlt?

--- 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 [email protected]{/,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 [email protected]{/,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$1.run(AnnotationConfiguration.java:542) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.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$1.run(AnnotationConfiguration.java:542) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.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 [email protected]{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

<plugin> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>9.1.3.v20140225</version>    
</plugin> 

Update:

Arbeitete nach der Konfiguration von maven-compiler-plugin 1,8-1,7 Ändern What'is falsch mit der Verwendung von mit ?

+4

Unrelated zu Ihrem Problem, aber Sie vergessen, die Codierung verwendet in 'Nachricht angeben.getBytes() ' – fge

+0

@fge +1, Es ist nur ein Hallo Welt Beispiel, um Dinge zum Laufen zu bringen :) – tarrsalah

Antwort

-2

Wegen der Versionsunterschiede zwischen Java (8) und die Version von ASM in gebündelt Jetty, haben Sie die Art von Ausnahmen Sie erlebt haben.

Sie müssen die Versionenkompatibel miteinander DownloadASM5,0 oder größer und ersetzt die folgenden 2 Dateien im Jetty Installation Ordner machen:

1.asm-4.1.jarmitasm-5.0_BETA.jar

2.asm-commons-4.1.jarmitasm-commons-5.0_BETA.jar

+1

Wird dies in zukünftigen Versionen von Jetty 9.1 geändert werden? –

+1

Es gab ein Update für die von uns verwendete asm-Bibliothek sowie einige API-Änderungen zur Unterstützung des neuen JDK8-Bytecode-Scans. – GingerHead

7

diese Arbeit zu machen, haben Sie ASM 5 auf die Abhängigkeiten von der Anlegestelle-maven- hinzufügen Plugin für die Zeit

<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> 
+1

Dies funktioniert vielleicht überhaupt nicht, da Jetty von der älteren Version abhängt, die eine andere "group" asm hat und daher maven den Tausch der Abhängigkeiten wahrscheinlich nicht bewältigen wird. – adam

+1

funktioniert nicht für mich. jetty-maven-plugin 9.4.0.v20161208 – Eugene

3

Kontrolle dieses

sein

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)