简体   繁体   English

java.lang.IllegalArgumentException:尝试构建Restful Web Service时出错

[英]java.lang.IllegalArgumentException: Error when trying to build Restful Web Service

I am trying to build a simple Rest web service by following this tutorial 我正在尝试通过遵循本教程来构建简单的Rest Web服务

But when i run this project on Eclipse, an Error appears: 但是,当我在Eclipse上运行此项目时,出现错误:

   Mar 11, 2018 8:39:33 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet [Distance] in web application [/Distance] threw load() exception
java.lang.IllegalArgumentException
    at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:170)
    at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:153)
    at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:424)
    at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener.process(AnnotationAcceptingListener.java:170)
    at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:892)
    at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:849)
    at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:755)
    at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1181)
    at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1154)
    at org.glassfish.jersey.server.ResourceConfig.createRuntimeConfig(ResourceConfig.java:1150)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:322)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:315)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1230)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1174)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1066)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5370)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5668)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1700)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1690)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.base/java.lang.Thread.run(Thread.java:844)

Can someone please told me where i am wrong? 有人可以告诉我我错了吗? Thank you in advance. 先感谢您。 Sorry for my bad English 对不起,我的英语不好

I had the same error in my Maven project after some open dependencies were updated to new versions. 将一些开放的依赖项更新到新版本后,我的Maven项目中出现了相同的错误。 In my case they were 就我而言,他们是

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>[1.3.2,)</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>[3.0.1,)</version>
</dependency>
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>[2.5.0,)</version>
</dependency>

which respectively downloaded 分别下载了

mybatis-spring-2.0.0-SNAPSHOT.jar
mybatis-3.5.0-SNAPSHOT.jar
eclipselink-3.0.0-SNAPSHOT.jar

I searched for the JARs history inside Maven Respository (usually something like {user-home}/.m2/repository ) and found all JARs were update the day I got this error. 我在Maven资源库(通常类似于{user-home}/.m2/repository /。m2 {user-home}/.m2/repository )中搜索了JAR的历史记录,发现所有JAR都是在收到此错误之日更新的。

I restored the JARs' previous version using "closed" dependencies in my pom.xml , ie: 我使用pom.xml “ closed”依赖项恢复了JAR的先前版本,即:

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>**2.5.0**</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>**1.3.2**</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>**3.4.6**</version>
</dependency>

then update the dependecies. 然后更新依赖关系。 Maven downloaded Maven下载

mybatis-spring-1.3.2.jar
mybatis-3.4.6.jar
eclipselink-2.5.0.jar

instead, and all worked fine. 相反,一切正常。

Don't even know whether you're using a pom.xml (Maven Project) but of course you're running Tomcat so check if there are some incompatible or recently modified jar versions inside your 甚至不知道您是否正在使用pom.xml(Maven项目),但是您当然正在运行Tomcat,因此请检查您的内部是否存在一些不兼容或最近修改过的jar版本

{catalina.base}/lib

or you web app 或者您的网络应用

WEB-INF/lib

Hope this helps. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM