diff --git a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java index 4f076cd6284..2ec5516e77d 100644 --- a/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java +++ b/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java @@ -978,11 +978,18 @@ public class AnnotationParser return false; //skip anything that is not a class file - if (!name.toLowerCase(Locale.ENGLISH).endsWith(".class")) + String lc = name.toLowerCase(Locale.ENGLISH); + if (!lc.endsWith(".class")) { if (LOG.isDebugEnabled()) LOG.debug("Not a class: {}",name); return false; } + + if (lc.equals("module-info.class")) + { + if (LOG.isDebugEnabled()) LOG.debug("Skipping module-info.class"); + return false; + } //skip any classfiles that are not a valid java identifier int c0 = 0; @@ -990,7 +997,7 @@ public class AnnotationParser c0 = (ldir > -1 ? ldir+1 : c0); if (!Character.isJavaIdentifierStart(name.charAt(c0))) { - if (LOG.isDebugEnabled()) LOG.debug("Not a java identifier: {}"+name); + if (LOG.isDebugEnabled()) LOG.debug("Not a java identifier: {}",name); return false; } diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index c21f67153fd..00520af6887 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -194,7 +194,7 @@ org.apache.maven.plugins maven-invoker-plugin - 3.0.1-SNAPSHOT + 3.0.1 integration-test diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java index b2efc08d1fe..ad47630d187 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java @@ -793,9 +793,16 @@ public class HttpInput extends ServletInputStream implements Runnable synchronized (_inputQ) { if (_state instanceof ErrorState) - LOG.warn(x); + { + Throwable failure = new Throwable(_state.getError()); + failure.addSuppressed(new Throwable(x)); + LOG.warn(failure); + } else - _state = new ErrorState(x); + { + // Retain the current stack trace by wrapping the failure. + _state = new ErrorState(new Throwable(x)); + } if (_listener == null) _inputQ.notify();