It's a learning project for REST. It's based on the jersey-quickstart-webapp.
org.glassfish.jersey.archetypes:jersey-quickstart-webapp (An archetype which contains a quick start Jersey-based web application project.)
I only have java8 sdk installed on my computer. I also configured the maven-compiler-plugin in the pom.xml file to use java 1.8. I'm using tomcat7, maven3, eclipse, and postman.
The start project contains a MyResource.java file, which contains a getIt()
method, and I've created a String list in it, and tried to print it with a java8 stream:
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
List<String> strings = Arrays.asList("a", "b", "c");
strings.stream().forEach(System.out::println);
return "Got it!";
}
With the stream code line commented, the above code works, and returns the "Got it" string. But when I un-comment it, and start tomcat, it throws an exception (see below), and when I try to send a GET request, it responds with: HTTP Status 500 - Servlet.init() for servlet Jersey Web Application threw exception
I'm kinda stuck, does anyone have an idea why it isn't working?
Exception:
jan. 11, 2016 2:01:11 DU org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.ArrayIndexOutOfBoundsException: 3845
at org.objectweb.asm.ClassReader.accept(ClassReader.java:470)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:425)
at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener.process(AnnotationAcceptingListener.java:169)
at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:879)
at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:837)
at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:752)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1159)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1132)
at org.glassfish.jersey.server.ResourceConfig.createRuntimeConfig(ResourceConfig.java:1128)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:281)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:298)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5253)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5543)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
jan. 11, 2016 2:01:11 DU org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet [Jersey Web Application] in web application [/excercise-services] threw load() exception
java.lang.ArrayIndexOutOfBoundsException: 3845
at org.objectweb.asm.ClassReader.accept(ClassReader.java:470)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:425)
at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener.process(AnnotationAcceptingListener.java:169)
at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:879)
at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:837)
at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:752)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1159)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1132)
at org.glassfish.jersey.server.ResourceConfig.createRuntimeConfig(ResourceConfig.java:1128)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:281)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:298)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5253)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5543)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)