java - 使用泽西岛的例外
问题描述
我想使用 Jersey 启动一个 REST Web 服务。多个教程指出这是要走的路:
ResourceConfig resourceConfig = new PackagesResourceConfig(TestSystem.class.getPackageName());
HttpServer server = HttpServerFactory.create("http://localhost:8080/rest", resourceConfig);
server.start();
声明
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19.4</version>
</dependency>
但是我得到:
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 com.sun.jersey.spi.scanning.AnnotationScannerListener.onProcess(AnnotationScannerListener.java:138)
at com.sun.jersey.core.spi.scanning.uri.FileSchemeScanner$1.f(FileSchemeScanner.java:86)
at com.sun.jersey.core.util.Closing.f(Closing.java:71)
at com.sun.jersey.core.spi.scanning.uri.FileSchemeScanner.scanDirectory(FileSchemeScanner.java:83)
at com.sun.jersey.core.spi.scanning.uri.FileSchemeScanner.scan(FileSchemeScanner.java:71)
at com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:226)
at com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:142)
(即使我不使用resourceConfig
.)
自然,我的第一直觉是泽西岛一定有问题,所以我尝试了1.18.1:
java.lang.ArrayIndexOutOfBoundsException: Index 52264 out of bounds for length 287
at jersey.repackaged.org.objectweb.asm.ClassReader.readClass(ClassReader.java:1976)
at jersey.repackaged.org.objectweb.asm.ClassReader.accept(ClassReader.java:464)
at jersey.repackaged.org.objectweb.asm.ClassReader.accept(ClassReader.java:420)
at com.sun.jersey.spi.scanning.AnnotationScannerListener.onProcess(AnnotationScannerListener.java:138)
at com.sun.jersey.core.spi.scanning.JarFileScanner.scan(JarFileScanner.java:97)
at com.sun.jersey.core.spi.scanning.JarFileScanner$1.f(JarFileScanner.java:74)
at com.sun.jersey.core.util.Closing.f(Closing.java:71)
对于高于 1.19 的所有内容,我得到第一个异常,低于它的所有内容都是第二个异常。所以也许我的网络服务有问题:
@ApplicationPath(TestSystem.URL)
public class TestSystem extends Application {
public static final String URL = "/testsystem/";
}
@Path(HelloWorldEndpoint.URL)
public class HelloWorldEndpoint {
public static final String URL = "hello";
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/")
public String greet() {
return "Hello World!";
}
}
如何使用 Jersey 启动我的 REST Web 服务?
解决方案
推荐阅读
- sql-server - 如果在 SQL Server 中使用多个插入语句,则为 else
- java - 从 CLI 运行自定义 mojo 时,Maven 无法识别参数
- scikit-learn - ValueError:至少需要一个数组或数据类型 HistGradientBoostingRegressor
- mysql - EAV、多左连接查询优化
- javascript - 存根和假货有什么区别?
- flutter - Flutter 自定义页面过渡 - 动画旧路线
- spring - 春季启动异常:无法继续请求。无效属性
- dart - 在 Process.run 中检查什么来捕获错误?
- python - Flask/SQLAlchemy - 创建具有一对多关系的模型时出错(一个或多个映射器无法初始化......)
- python - 转换时间戳格式的问题