Class 将 JAX-RS 与 Eclipse 和 Glassfish 一起使用时未找到
Class not found when using JAX-RS with Eclipse and Glassfish
我正在使用 Eclipse Luna(版本 4.4.2)和 Glassfish 4 构建一个使用 JAX-RS 的 REST 网络应用程序。
下面的一段代码,只是一个非常简单的 post 到 REST api 之前工作得很好,已经开始抛出一个非常奇怪的错误:
@POST
public Response addToWatchlist(WatchlistEntry watchlistentry)
{
return Response.ok(watchlist_service.addToWatchlist(watchlistentry).toString()).build();
}
错误如下:
Warning: StandardWrapperValve[Jersey Web Application]: Servlet.service() for servlet Jersey Web Application threw exception
java.lang.ClassNotFoundException: javax.xml.parsers.ParserConfigurationException not found by org.eclipse.persistence.moxy
关于这个我能找到的只有这个网页:
https://java.net/jira/browse/JERSEY-2888
其中一条评论说这已在 EclipseLink 2.6.1 和 Jersey 2.19 中修复。
我是使用 MAVEN 和 eclipse 的新手 - 假设以上是正确的,我如何在 Eclipse 中获取我的 Maven 项目来更新 Jersey 版本?另外如何更新 EclipseLink 版本?他们的网站似乎只有 2.6.0 版可用:http://www.eclipse.org/eclipselink/#download
我假设所有这些都可以通过 eclipse 本身来完成?
感谢所有帮助!
编辑 1: eclipselink 2.6.1 似乎已于 2015 年 10 月 15 日发布,如您所见:http://www.eclipse.org/eclipselink/releases/
但是,正如您在这里看到的那样,它似乎没有被合并到 "help -> update software" 的 eclipse 中:http://download.eclipse.org/rt/eclipselink/updates/
这很烦人。
我正在构建我的 REST 网站,由于这个错误,PUT 或 POST 将无法工作。
有人知道如何让 2.6.1 工作吗?我正在使用 Maven jersey-quickstart-webapp 项目。
这个 bug 让人头疼。
编辑 2: 我今天有一个黑客在工作。当我以编程方式检查在运行时使用的 eclipselink 版本如下所示时,它告诉我它是 2.6.1 版,即使错误仍然存在:
Class<?> myClass = Class.forName("org.eclipse.persistence.Version");
Method myMethod = myClass.getMethod("getVersion");
String version = myMethod.invoke(null).toString();
System.out.println("version = " + version);
在相关问题 () 中,我找到了如何找到 glassfish 用于 eclipse 的实际 jar 文件。它们位于 glassfish/modules 目录中。 org.eclipse.persistence.core.jar 文件中有一个 readme.html,它告诉您 glassfish 正在使用的 eclipselink 版本。对我来说是 2.6。
我用 maven 站点的最新版本手动更新了 org.eclipse.persistence.core.jar 和 org.eclipse.persistence.moxy.jar 文件。虽然这很 hacky,因为我不知道这样做还有什么影响,但它确实解决了这个问题。如果我找到正确的方法,我会在下面写一个答案,供大家参考。
浏览 Jersey JIRA 和 eclipse link 网站,Eclipse link 2.6.1 似乎仍在开发中,即尚未发布。这就是它无法下载的原因。
要在 Maven 中使用 Jersey 的更新版本,您需要根据 pom.xml.
中的更新版本 2.19 提供
但是,由于 eclipse link 2.6.1 尚未发布,即使您使用较新版本的 Jersey,也可能用处不大。不过你还是可以试试看。
要更新球衣版本,请找到以下依赖项并更新 pom.xml 文件中版本标签的值
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.22.1</version>
</dependency>
您将项目部署到哪个服务器?我在使用 Glassfish 4.1.1 时遇到了很多问题(包括那个错误)。我降级到 4.1,一切运行良好。这可能是由于 4.1.1 最新模块(服务器中包含的 jars)的问题。我希望它有所帮助。它不是最好的解决方案,但对我来说是一个临时的解决方法,直到我发现哪些模块出现故障。
问题已通过更新 glassfish 使用的 eclipselink 版本解决。 Eclipse 更新了它的版本,但 glassfish 需要它自己的更新。需要放在 glassfish/modules 目录中的 jar 文件列表在这个答案中给出:How to change EclipseLink in GlashFish 4.0?
我正在使用 Eclipse Luna(版本 4.4.2)和 Glassfish 4 构建一个使用 JAX-RS 的 REST 网络应用程序。
下面的一段代码,只是一个非常简单的 post 到 REST api 之前工作得很好,已经开始抛出一个非常奇怪的错误:
@POST
public Response addToWatchlist(WatchlistEntry watchlistentry)
{
return Response.ok(watchlist_service.addToWatchlist(watchlistentry).toString()).build();
}
错误如下:
Warning: StandardWrapperValve[Jersey Web Application]: Servlet.service() for servlet Jersey Web Application threw exception
java.lang.ClassNotFoundException: javax.xml.parsers.ParserConfigurationException not found by org.eclipse.persistence.moxy
关于这个我能找到的只有这个网页: https://java.net/jira/browse/JERSEY-2888
其中一条评论说这已在 EclipseLink 2.6.1 和 Jersey 2.19 中修复。
我是使用 MAVEN 和 eclipse 的新手 - 假设以上是正确的,我如何在 Eclipse 中获取我的 Maven 项目来更新 Jersey 版本?另外如何更新 EclipseLink 版本?他们的网站似乎只有 2.6.0 版可用:http://www.eclipse.org/eclipselink/#download
我假设所有这些都可以通过 eclipse 本身来完成?
感谢所有帮助!
编辑 1: eclipselink 2.6.1 似乎已于 2015 年 10 月 15 日发布,如您所见:http://www.eclipse.org/eclipselink/releases/
但是,正如您在这里看到的那样,它似乎没有被合并到 "help -> update software" 的 eclipse 中:http://download.eclipse.org/rt/eclipselink/updates/
这很烦人。
我正在构建我的 REST 网站,由于这个错误,PUT 或 POST 将无法工作。
有人知道如何让 2.6.1 工作吗?我正在使用 Maven jersey-quickstart-webapp 项目。
这个 bug 让人头疼。
编辑 2: 我今天有一个黑客在工作。当我以编程方式检查在运行时使用的 eclipselink 版本如下所示时,它告诉我它是 2.6.1 版,即使错误仍然存在:
Class<?> myClass = Class.forName("org.eclipse.persistence.Version");
Method myMethod = myClass.getMethod("getVersion");
String version = myMethod.invoke(null).toString();
System.out.println("version = " + version);
在相关问题 (
我用 maven 站点的最新版本手动更新了 org.eclipse.persistence.core.jar 和 org.eclipse.persistence.moxy.jar 文件。虽然这很 hacky,因为我不知道这样做还有什么影响,但它确实解决了这个问题。如果我找到正确的方法,我会在下面写一个答案,供大家参考。
浏览 Jersey JIRA 和 eclipse link 网站,Eclipse link 2.6.1 似乎仍在开发中,即尚未发布。这就是它无法下载的原因。
要在 Maven 中使用 Jersey 的更新版本,您需要根据 pom.xml.
中的更新版本 2.19 提供但是,由于 eclipse link 2.6.1 尚未发布,即使您使用较新版本的 Jersey,也可能用处不大。不过你还是可以试试看。
要更新球衣版本,请找到以下依赖项并更新 pom.xml 文件中版本标签的值
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.22.1</version>
</dependency>
您将项目部署到哪个服务器?我在使用 Glassfish 4.1.1 时遇到了很多问题(包括那个错误)。我降级到 4.1,一切运行良好。这可能是由于 4.1.1 最新模块(服务器中包含的 jars)的问题。我希望它有所帮助。它不是最好的解决方案,但对我来说是一个临时的解决方法,直到我发现哪些模块出现故障。
问题已通过更新 glassfish 使用的 eclipselink 版本解决。 Eclipse 更新了它的版本,但 glassfish 需要它自己的更新。需要放在 glassfish/modules 目录中的 jar 文件列表在这个答案中给出:How to change EclipseLink in GlashFish 4.0?