我使用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
答案 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详细信息
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
更改为常规循环后,它开始工作。