Java RESTWebService使用SpringBoot和jersey。错误:应用程序初始化期间,应用程序资源模型的验证失败

Java RESTWebService使用SpringBoot和jersey。错误:应用程序初始化期间,应用程序资源模型的验证失败,java,web-services,rest,maven,jersey,Java,Web Services,Rest,Maven,Jersey,下面我将在Spring boot应用程序中使用Jersey创建REST web服务: 我在初始化时出错。我想不出是什么 当我输入时: 我得到这个错误: 此应用程序没有/error的显式映射,因此您可以看到 这是一种退路 2017年4月20日星期四12:57:24 WAT出现意外错误 (类型=内部服务器错误,状态=500)。验证 应用程序资源模型在应用程序期间失败 初始化。[[FATAL]未找到参数为的注入源 键入publicjavax.ws.rs.core.Response com.first

下面我将在Spring boot应用程序中使用Jersey创建REST web服务:

我在初始化时出错。我想不出是什么

当我输入时:

我得到这个错误:

此应用程序没有/error的显式映射,因此您可以看到 这是一种退路

2017年4月20日星期四12:57:24 WAT出现意外错误 (类型=内部服务器错误,状态=500)。验证 应用程序资源模型在应用程序期间失败 初始化。[[FATAL]未找到参数为的注入源 键入publicjavax.ws.rs.core.Response com.first.rest.test.controller.BookController.updateBook(java.lang.String,com.first.rest.test.model.Book) 在索引0处;source='ResourceMethod{httpMethod=PUT, consumedTypes=[application/json],producedTypes=[],suspended=false, suspendTimeout=0,suspendTimeoutUnit=毫秒, invocable=invocable{handler=ClassBasedMethodHandler{handlerClass=class com.first.rest.test.controller.BookController, handlerConstructors=[org.glassfish.jersey.server.model。HandlerConstructor@642e8d2e]}, definitionMethod=public javax.ws.rs.core.Response com.first.rest.test.controller.BookController.updateBook(java.lang.String,com.first.rest.test.model.Book), parameters=[Parameter[type=class java.lang.String,source=oid, defaultValue=null],参数[type=class] com.first.rest.test.model.Book,source=null,defaultValue=null]], responseType=classjavax.ws.rs.core.Response},nameBindings=[]}']

控制台里有这个

servlet com.first.rest.test.jersey配置

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during
应用程序初始化。 [[FATAL]未找到public javax.ws.rs.core.Response类型参数的注入源

项目结构为:

课程: 主要应用程序类别:

   @SpringBootApplication
public class FirstRestApplication {
    public static void main(String[] args) {
        SpringApplication.run(FirstRestApplication.class, args);
    }
Jersey配置类:

@Configuration
@ApplicationPath("rest")
public class JerseyConfiguration extends ResourceConfig {
    public JerseyConfiguration() {

    }

    @PostConstruct
    public void setUp() {
        register(BookController.class);
        register(GenericExceptionMapper.class);
    }
}
图书管理员类:

 @Component
@Path("/books")
public class BookController {

    private BookService bookService;

    public BookController(BookService bookService) {
        this.bookService = bookService;
    }

    @GET
    @Produces("application/json")
    public Collection<Book> getAllBooks() {
        return bookService.getAllBooks();
    }

    @GET
    @Produces("application/json")
    @Path("/{oid}")
    public Book getBook(@PathParam("oid") String oid) {
        return bookService.getBook(oid);
    }

    @POST
    @Produces("application/json")
    @Consumes("application/json")
    public Response addBook(Book book) {
        bookService.addBook(book);
        return Response.created(URI.create("/" + book.getOid())).build();
    }

    @PUT
    @Consumes("application/json")
    @Path("/{oid}")
    public Response updateBook(@PathParam("oid") String oid, Book book) {
        bookService.updateBook(oid, book);
        return Response.noContent().build();
    }

    @DELETE
    @Path("/{oid}")
    public Response deleteBook(@PathParam("oid") String oid) {
        bookService.deleteBook(oid);
        return Response.ok().build();
    }
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.first.rest.test</groupId>
    <artifactId>firstrest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>first rest</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

4.0.0
com.first.rest.test
首先
0.0.1-快照
罐子
第一个休息
SpringBoot的演示项目
org.springframework.boot
spring启动程序父级
1.5.2.1发布
UTF-8
UTF-8
1.8
org.springframework.boot
弹簧起动试验
测试
org.springframework.boot
春靴起跑服
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
springbootmaven插件

我看到一个问题,但它与错误无关。如果希望注入构造函数,则需要
@Autowired
@Inject
注入构造函数。错误是说问题在于
updateBook
方法;无法为请求注入字符串参数。我能看到这种情况的唯一方法是ng是如果
@PathParam
注释不是
javax.ws.rs.PathParam
。我见过有人不小心导入了
javax.websocket.server.PathParam
,但我在你的项目中没有看到这种依赖关系。我发现我也不小心使用了它!我会更正它并查看。谢谢。我对第一句话的理解也是错误的。Y根据,你不需要
@Autowired
。每天学习一些新东西:-)@peeskillet我现在使用jax-rs提供的
code
@PathParam
code
。导入软件包时需要有人注意!:)我花了很多时间寻找原因!
public class Book {

    private String oid;
    private String name;
    private String author;
    private Category category;

    public Book() {

    }

     public Book(String oid, String name, String author, Category category) {
            super();
            this.oid = oid;
            this.name = name;
            this.author = author;
            this.category = category;
        }

        public String getOid() {
            return oid;
        }
        //more code

    }
<?xml version="1.0" encoding="UTF-8"?>
<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.first.rest.test</groupId>
    <artifactId>firstrest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>first rest</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>