我正在尝试使用以下代码片段从http://api.openweathermap.org/data/2.5/forecast/daily?lat=35&lon=139&cnt=10&mode=json接收json数据:
private WebTarget getWebTarget() {
Client client = JerseyClientBuilder.newClient();
return client.target("http://api.openweathermap.org/")
.path("data")
.path("2.5");
}
// new one method
Response response = getWebTarget()
.path("daily")
.queryParam("q", String.format("%s,%s", town, countryCode))
.queryParam("cnt", 10)
.queryParam("mode", "json")
.request().accept(MediaType.APPLICATION_JSON_TYPE).get();
WeatherForecast forecast = response.readEntity(WeatherForecast.class);
Run Code Online (Sandbox Code Playgroud)
但最后一行抛出:
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:找不到媒体类型= application/octet-stream的MessageBodyReader,类型=类com.app.weather.providers.org.openweathermap.pojo.WeatherForecast,genericType = class com.app .weather.providers.org.openweathermap.pojo.WeatherForecast.
pom.xml中的Jersey依赖项:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.4</version>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId> …Run Code Online (Sandbox Code Playgroud) 我有一个Bean接口,AbstractBean(实现Bean)和SpecificBean(扩展AbstractBean).我想通过以下代码片段注入SpecificBean:
@Stateless
@Specific
public class SpecificBean extends AbstractBean {..}
@Path("resource")
public class Service {
@Inject
@Specific
private Bean bean;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试将其部署到glassfish时,我看到下一个错误:
发生错误部署期间发生错误:加载应用程序时出现异常:CDI部署失败:WELD-001408类型为[IterableProvider>]的不满意依赖关系,注入点为[@Default] [[BackedAnnotatedParameter] [BackedAnnotatedConstructor]参数2注入org.glassfish.jersey.internal.inject.JerseyClassAnalyzer(@Named ClassAnalyzer,IterableProvider>)].
如果删除所有注释(预期的@Path)应用程序部署没有任何错误.