在我将 JAX-RS 2.1/Jersey 2.26+ 库添加到我的动态 Web 项目后,我遇到了下一个错误:
上传 WAR 文件 1 后出现玻璃鱼错误
服务器正在运行带有 JDK 1.7.0_80 的 Glassfish 3.1
我尝试使用Jersey 1.19.1 ZIP捆绑包,但随后Glassfish说:
上传 WAR 文件 2 后出现玻璃鱼错误
带有最新泽西岛的WAR文件在Tomcat 9和Java 8中运行完美,但我需要这个项目在Glassfish 3.1和Java 7上运行。
如果您能提供指向正确版本的泽西岛的链接,我将不胜感激!
这是我的第一个问题,所以请原谅任何错误。
要用Glassfish 3
运行泽西岛,你真的需要从你的战争中排除所有Jersey.2
事情,或者:
-
使用
Glassfish 3.1.2.2
安装的捆绑Jersey.1
实现(检查您将看到的/lib 或/modules 文件夹或在线文档(编辑:球衣版本应该是1.11.1
<!-- Keep 1.11.1 for Jersey which is Fish's version --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.11.1</version> <!-- <scope>provided</scope> ... set Provided scope for GF3 deployment --> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-servlet</artifactId> <version>1.11.1</version> <!-- <scope>provided</scope> ... set Provided scope for GF3 deployment --> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-bundle</artifactId> <version>1.11.1</version> <!-- <scope>provided</scope> ... set Provided scope for GF3 deployment --> </dependency> <!-- Etc. - Organize your dependencies accordingly ... -->
-
将
Glassfish3
安装的捆绑Jersey.1
库替换为另一个Jersey.1
实现/库(如果您需要更新的版本( - 但永远不要指望Jersey.2
与GF3一起运行。
尽管如此,您实际上可以编写适用于Jersey.1
和Jersey.2
的代码,但是当您进行打包和部署时,您必须使用适当的目标JVM,依赖项和部署描述符来构建它 - 只要您的模块化"正常"。我没有完全以个人身份阅读这篇文章,但为什么不看看这里。
来自泽西岛最新 (2.26( 文档
https://jersey.github.io/documentation/latest/modules-and-dependencies.html#d0e560
从 Jersey 2.26 开始,所有模块都是使用 Java SE 8 构建的,并且不支持在较旧的 Java SE 发行版上运行它。
所以如果你真的想使用球衣 2.26+,JDK 应该是 1.8+。别无选择。