小编use*_*560的帖子

找不到媒体类型= application/octet-stream的MessageBodyReader

我正在尝试使用以下代码片段从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)

java rest json jersey maven

14
推荐指数
1
解决办法
4万
查看次数

无法将*.war部署到Glassfish 4

我有一个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)应用程序部署没有任何错误.

java dependency-injection ejb java-ee

8
推荐指数
1
解决办法
9447
查看次数

标签 统计

java ×2

dependency-injection ×1

ejb ×1

java-ee ×1

jersey ×1

json ×1

maven ×1

rest ×1