org.objectweb.asm.ClassReader.readInt中的Jersey REST异常java.lang.ArrayIndexOutOfBoundsException

时间:2013-11-20 13:08:46

标签: java rest jersey jdk1.5

我使用Jersey 1.2使用JDK1.5构建RESTful服务

当我测试REST服务时,我收到以下异常。

  

java.lang.ArrayIndexOutOfBoundsException:2884779 at       org.objectweb.asm.ClassReader.readInt(未知来源)at       org.objectweb.asm.ClassReader.accept(未知来源)at       org.objectweb.asm.ClassReader.accept(未知来源)at       com.sun.jersey.spi.scanning.AnnotationScannerListener.onProcess       (AnnotationScannerListener.java:130)at       com.sun.jersey.core.spi.scanning.uri.FileSchemeScanner $ 1       f(FileSchemeScanner.java:83)at       com.sun.jersey.core.util.Closing.f(Closing.java:68)

我创建了一个简单的测试类

@Path("/employee")
public class TestRest {


    @GET
    @Produces( { MediaType.TEXT_HTML })
    public String getClichedMessage() {

        return "Hello Smith";
    }
}

如何解决此问题?

我的jar版本

jersey-server-1.2.jar
jersey-core-1.2.jar
grizzly-servlet-webserver-1.9.18-i.jar
asm-3.1.jar
jsr311-api-1.1.jar

3 个答案:

答案 0 :(得分:2)

检查您的注释

  @POST
  @Produces(MediaType.TEXT_HTML) also try

也可以尝试

您的类路径上的asm.jar版本不正确。确保:

您部署的lib文件夹包含与target / app.war / WEB-INF / lib

相同的jar文件

你没有两个版本的asm.jar

maven中没有冲突的版本

答案 1 :(得分:1)

我使用的是 apache 服务器 8.5.59 并遇到相同的异常。 现在我转移到 apacher 服务器版本 8.5.12。

一切正常。

请查找jar详细信息

  • asm-3.1.jar
  • jersey-bundle-1.1.5.1.jar

JDK:祖鲁 8.36.0.2

Eclipse : Oxygen.2 发布 (4.7.2)

答案 2 :(得分:0)

就我而言,我有这段代码

@GET
@Path("/get_something")
@Produces(MediaType.APPLICATION_JSON)
public Message<String> getSomething(@QueryParam("p_item") String p_item,  @QueryParam("p_items") List<String> p_items) throws Exception {
    ...
    p_items.forEach(s -> {
       try {
           // something that throws IOException 
       } catch (IOException e) {
           throw new RuntimeException(e);
       }
    });
    ...
}

forEach更改为常规循环后,它开始工作。