java web 项目名更改 illegalargument,迁移Jersey项目以在jersey.repackaged.org.objectweb.asm.ClassReader中的java.lan...

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值