当我使用netbeans运行但是现在执行jar文件时,杰克逊的泽西工作

时间:2017-08-20 12:48:43

标签: java json rest maven netbeans

早上好, 当我执行我的jar文件时,当我尝试使用我的REST Web服务时出现以下错误:

GRAVE: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List<com.matheusflausino.models.Tests>.

以下是我项目的主要部分: pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.matheusflausino</groupId>
<artifactId>API-RESTful</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<repositories>
    <repository>
        <id>unknown-jars-temp-repo</id>
        <name>A temporary repository created by NetBeans for libraries and jars it could not identify. Please replace the dependencies in this repository with correct ones and delete this repository.</name>
        <url>file:${project.basedir}/lib</url>
    </repository>
</repositories>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>${jersey.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-grizzly2-http</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
    </dependency>

    <!-- uncomment this to get JSON support: -->
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
        <scope>test</scope>
    </dependency>

    <!-- For connection pooling -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
        <version>5.2.10.Final</version>
    </dependency>

    <!-- for JPA, use hibernate-entitymanager instead of hibernate-core -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.2.10.Final</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.42</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-4</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>com.matheusflausino.rest.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<properties>
    <jersey.version>2.26-b08</jersey.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>
<name>API-RESTful</name>

启动灰熊服务器的主类:

public class Main {
// Base URI the Grizzly HTTP server will listen on
public static final String BASE_URI = "http://localhost:8080/api/";

/**
 * Starts Grizzly HTTP server exposing JAX-RS resources defined in this application.
 * @return Grizzly HTTP server.
 */
public static HttpServer startServer() {
    // create a resource config that scans for JAX-RS resources and providers
    // in com.matheusflausino.api.rest package
    final ResourceConfig rc = new ResourceConfig().packages("com.matheusflausino.rest");
    rc.register(JacksonFeatures.class);

    // create and start a new instance of grizzly http server
    // exposing the Jersey application at BASE_URI
    return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
}

/**
 * Main method.
 * @param args
 * @throws IOException
 */
public static void main(String[] args) throws IOException {
    final HttpServer server = startServer();
    System.out.println(String.format("Jersey app started with WADL available at "
            + "%sapplication.wadl\nHit enter to stop it...", BASE_URI));
    System.in.read();
    server.stop();
}

}

其余的课程:

@Path("test")

公共课测试{

@GET
@Produces({MediaType.APPLICATION_JSON})
public List<Tests> getAll() {
    return new TestDAO().findAll();
}

@GET
@Path("/{id}")
@Produces({MediaType.APPLICATION_JSON})
public Tests get(@PathParam("id") Long id) {
    return (Tests) new TestDAO().find(id);
}

@POST
@Consumes({MediaType.APPLICATION_JSON})
public Response create(Tests test) {
    new TestDAO().create(test);
    return Response.status(200).entity("Cadastro realizado com sucesso.").build();
}

@PUT
@Consumes({MediaType.APPLICATION_JSON})
public Response update(Tests test) {
    new TestDAO().edit(test);
    return Response.status(200).entity("Alteração realizada com sucesso.").build();
}

@DELETE
@Path("/{id}")
@Produces({MediaType.APPLICATION_JSON})
public Response delete(@PathParam("id") Long id) {
    new TestDAO().remove(id);
    return Response.status(200).entity("Remoção realizada com sucesso.").build();
}

}

奇怪的是,当我从netbeans执行并且只从jar文件运行时它执行得非常好我得到了错误。有人会帮助我吗?

0 个答案:

没有答案