Previously project is on Tomcat 8 and JDK 8 it was Working Fine But when i migrated my project on Tomcat 9 and JDK 10 it is giving me error as follows :
Oct 05, 2018 11:02:01 AM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.IllegalArgumentException
at jersey.repackaged.org.objectweb.asm.ClassReader.(ClassReader.java:170)
at jersey.repackaged.org.objectweb.asm.ClassReader.(ClassReader.java:153)
at jersey.repackaged.org.objectweb.asm.ClassReader.(ClassReader.java:424)
at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener.process(AnnotationAcceptingListener.java:170)
at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:915)
at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:869)
at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:775)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.(ResourceConfig.java:1206)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.(ResourceConfig.java:1178)
at org.glassfish.jersey.server.ResourceConfig.createRuntimeConfig(ResourceConfig.java:1174)
at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:345)
at org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:392)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1124)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1079)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:971)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4829)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5143)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
My pom.xml file is :
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
com.BAE
BAE
1.0.1-SNAPSHOT
BAE Maven Webapp
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
org.mockito
mockito-all
1.9.5
test
org.testng
testng
6.14.3
javax.servlet
javax.servlet-api
3.1.0
provided
javax.mail
1.4
commons-codec
commons-codec
1.5
javax.inject
javax.inject
1
javax.validation
validation-api
1.0.0.GA
javax.json
javax.json-api
1.0
javax.ws.rs
javax.ws.rs-api
2.1
org.jboss.interceptor
jboss-interceptor-api
1.1
xerces
xercesImpl
2.8.0
commons-fileupload
commons-fileupload
1.3
com.fasterxml.jackson.core
jackson-annotations
2.9.5
io.swagger
swagger-models
1.5.3
io.swagger
swagger-annotations
1.5.0
io.swagger
swagger-jaxrs
1.5.13
io.swagger
swagger-core
1.5.20
javax.ws.rs
jsr311-api
org.glassfish.jersey.media
jersey-media-multipart
2.25
org.glassfish.jersey.core
jersey-client
2.25
org.glassfish.jersey.core
jersey-server
2.25
org.glassfish.jersey.containers
jersey-container-servlet-core
2.25
org.glassfish.jersey.containers
jersey-container-servlet
2.25
com.microsoft.sqlserver
mssql-jdbc
6.4.0.jre8
net.sourceforge.jtds
jtds
1.3.1
org.glassfish.jersey.media
jersey-media-json
2.0-m05
org.glassfish.jersey.media
jersey-media-json-jackson
2.26
javax.ws.rs
jsr311-api
1.1.1
com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
2.9.5
com.fasterxml.jackson.jaxrs
jackson-jaxrs-base
2.9.5
com.fasterxml.jackson.dataformat
jackson-dataformat-yaml
2.9.5
com.fasterxml.jackson.dataformat
jackson-dataformat-xml
2.9.5
com.fasterxml.jackson.datatype
jackson-datatype-joda
2.9.5
org.eclipse
yasson
1.0
test
BAE_4_4
src\main\java
src/test
src
**/*.java
main/**
test/**
maven-compiler-plugin
3.5.1
1.8
1.8
org.apache.maven.plugins
maven-surefire-plugin
2.14.1
testng.xml
org.apache.maven.plugins
maven-eclipse-plugin
2.9
true
false
2.0
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
/BAE
war
Above is all Dependencies jar files whoch i used in tomcat 8 and jdk 8.
Can anyone Suggest me what is the cause and solution for this issue ?
Thanks in Advance....
解决方案
tl;dr
To use Java 10, switch to Jersey 2.27 (which is the latest as of this date (10/5/18)).
java.lang.IllegalArgumentException
at jersey.repackaged.org.objectweb.asm.ClassReader.
Jersey repackages asm and puts these class files into the jersey-server jar. Just digging through the jar in my IDE, I looked at the ClassReader constructor (that's what means) to see where IllegalArgumentException is thrown. Note, I'm currently looking at Jersey version 2.25.1
public ClassReader(byte[] b, int off, int len) {
this.b = b;
if (this.readShort(off + 6) > 53) {
throw new IllegalArgumentException();
}
The 53 is the class file version. According to that link, 53 is for Java 9. So it appears Jersey 2.25.1 only supports up to Java 9. So I changed the Jersey dependency version to 2.26, and looked at the ClassReader constructor and it was exactly the same. So I switched to Jersey 2.27, and this is what I saw
public ClassReader(final byte[] b, final int off, final int len) {
this.b = b;
// checks the class version
// added "support" for java 11 compiled classes
if (readShort(off + 6) > Opcodes.V11) {
throw new IllegalArgumentException();
}
Notice the Opcodes.V11 (which I assume is Java 11). So it looks like for Java 10+ support, you must switch to Jersey 2.27, as also mentioned in this related issue
Update
After seeing your pom, you need to make sure you are changing the Jersey version on all your Jersey dependencies. And also you have so many unnecessary dependencies. The following are all you need. Remove anything else that has Jersey in the name.
KEEP THESE
Change to 2.27
org.glassfish.jersey.media
jersey-media-multipart
2.27
org.glassfish.jersey.containers
jersey-container-servlet
2.27
org.glassfish.jersey.media
jersey-media-json-jackson
2.27
REMOVE THESE
javax.ws.rs
javax.ws.rs-api
2.1
org.glassfish.jersey.core
jersey-client
2.25
org.glassfish.jersey.core
jersey-server
2.25
org.glassfish.jersey.containers
jersey-container-servlet-core
2.25
org.glassfish.jersey.media
jersey-media-json
2.0-m05
javax.ws.rs
jsr311-api
1.1.1
ADD EXCLUSION
io.swagger
swagger-jaxrs
1.5.13
javax.ws.rs
jsr311-api
Asides
See the Jersey Migration Guide for some other issues you may face when migrating to version 2.27
The one for sure thing you will need if you are migrating from pre-2.26 is the jersey-hk2 dependency. See this post for why.
org.glassfish.jersey.inject
jersey-hk2
2.27