- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试使用 Jersey 客户端来模拟对我的 Web 服务的 HTTP 请求。我试图实现 simple example从文档中。这是我的短代码:
public void restoreTest(String sessionId) throws Exception {
Client client = ClientBuilder.newClient();
WebTarget target = client.target(idsUrl).path("restore");
Form form = new Form();
form.param("sessionId", sessionId);
target.request(MediaType.APPLICATION_FORM_URLENCODED_TYPE);
}
我什至没有实现整个示例,因为目前我在最后一行遇到异常:
java.lang.NoSuchMethodError: javax.ws.rs.core.MultivaluedMap.addAll(Ljava/lang/Object;[Ljava/lang/Object;)V
at org.glassfish.jersey.client.ClientRequest.accept(ClientRequest.java:254)
at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:232)
at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:60)
at org.icatproject.idsclient.TestingClient.restoreTest(TestingClient.java:112)
at org.icatproject.ids.ids2.ArchiveTest.restoreThenArchiveDataset(ArchiveTest.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
我只将此依赖项添加到我的 pom.xml
:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.2</version>
</dependency>
我尝试用谷歌搜索问题,并调试应用程序,但我真的看不出它有什么问题。
编辑
所有 Maven 依赖项:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.2</version>
</dependency>
最佳答案
这看起来像是与 JAX-RS API 版本(包含 MultiValuedMap)有关的不一致。
您正在使用客户端 jersey-client v2.2,它是针对 JAX-RS API 的 v2.0 编译的。但是您的运行时状态可以使用定义 JAX-RS API v1.1 的 Java EE 6 运行。因此,您的代码需要 v2.0 的 JAX-RS API,但在运行时获取 v1.1。
这是 Java EE 6 的 MultiValuedMap API:
http://docs.oracle.com/javaee/6/api/javax/ws/rs/core/MultivaluedMap.html (没有 addAll 方法)。
对于 Java EE 7:
http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/MultivaluedMap.html (这个包括 addAll 方法)。
当您使用 Java EE 6 时,您应该使用 jersey-client v1.8,而不是 2.2。或者您应该在运行时类路径中包含 Java EE 7 API,而不是 6。
关于java - 泽西客户端中的 NoSuchMethodError : MultivaluedMap. addAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18574145/
我尝试使用 Jersey/Spring/Hibernate 部署应用程序,每次我尝试部署它时都会抛出此异常: SEVERE: Context initialization failed jav
这个问题已经有答案了: Java get ResultSet from SQL Array is Failing (1 个回答) 已关闭 8 年前。 我当前在尝试运行此 Sql 命令时遇到此异常:SE
我想使用 Jetty + Jersey 生成 JSON。我的 POM.XML 类似于这篇文章:How do I update example to work with latest versions
我面对的是 Jersey 2.7。这是我的服务: package edu.srv.rest; import javax.ws.rs.GET; import javax.ws.rs.POST; impo
我很难理解 Jersey 的注入(inject)机制。 JAX-RS 规范 (http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-
我使用 jersey 实现了 REST 服务。通信层通过 ssl 进行保护。在客户端,我收到了这样的要求:在调用服务并验证服务器端的请求之前,我应该签署 xml。 http://docs.oracle
我用Tomcat做了一个Jersey maven项目,现在我想将它连接到Mysql数据库。我进入数据源浏览器 -> 数据库连接 -> 新驱动程序定义,但是当我选择 MySQL JDBC Driver
我正在从事一个企业项目,该项目有一个 EJB 模块和一个在 GlassFish v3.1、Weld v1.1 和 Jersey 上运行的 Web 项目。在 EJB 中,我定义了一个实体类 Manufa
我花了太多时间(我会说超过 10 个小时)试图弄清楚如何获取基本的 json 调用(来自 angularjs)以在我的 Jersey 2.4 上打开和处理。我已经在谷歌上尝试了所有可能的结果,但仍然得
最近我开始使用 SecurityEntityFilteringFeature。放置在 Jersey 环境中的代码下方。 environment.jersey().register(SecurityEn
我有一个包含多个字段和文件上传的 HTML 表单。 在 Java 方面,我收到了如下表单,并且有效: @Component("org.phenotips.metabolites.FileUploade
我想为资源的 REST 接口(interface)提供这样的方法 @POST @Consumes(MediaType.APPLICATION_JSON) public void add(@Auth U
我是 Restful Web 服务的新手。我想通过 Jersey 客户端访问服务器。但我收到了 500 错误。我想做的是通过客户端提交表名称并以 JSON 形式检索表内容。谁能找到这里的错误吗? 这是
我在部署 Web 应用程序时遇到以下异常。使用weblogic 12c (JerseyWebTarget.java:71) at org.glassfish.jersey.cl
完整存档: google drive (Tomcat 7.0) 我重复了 Jersey Restful exception 中的代码 本地测试网址 - http://localhost:8080/te
我正在使用 jersey 1.8、tomcat 7 和 spring 4 构建 jersey Rest api 此服务将具有基本 HTTP 身份验证,并将提供任何来源的信息(它将由来自不同域的客户使用
我正在从现在只读的谷歌群组 App Engine for Java 中重新提出一个 Unresolved 问题,因为我有完全相同的问题。 ( original ) 我使用 jersey、jaxb 和
检测问号 我需要实现一个协议(protocol),用户可以在该协议(protocol)中提供附加到 URL 的问号,以便检索有关所提供资源的附加信息。我知道 URL 资源后面的问号表示查询参数。不幸的
我正在用 Jersey 编写一个 Restful Web 服务,这是示例代码: @GET @Produce(MediaType.APPLICATION_JSON) public String find
我有客户像这样传递 ID:/v1/path?id=1,2,3 我拥有的和想要的 我有一个 Dropwizard/Jersey 的资源类。我想在资源的 GET 方法中将查询参数 id=1,2,3 显示为
我是一名优秀的程序员,十分优秀!