繁体   English   中英

Spring Boot - javax Import 语句无法正常工作

[英]Spring Boot - javax Import statements not working correctly

我刚开始使用Spring Boot ,目前正在关注本教程,对命名和使用他们自己的Eclipse版本进行了一些小的修改,该版本内置了这个生成器

当我到达第一段代码时,我尝试复制导入语句以开始,

import com.fasterxml.jackson.annotation.JsonIgnore;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.HashSet;
import java.util.Set;

这让我在 javax 导入时出现以下错误:

The import javax.persistence.[insert name here] cannot be resolved

当我找到javax.persistence包时,我发现,果然,他们自己的服务提供的启动代码不包含列出的包。 我很困惑,想知道我在最初的步骤中是否做错了什么。 有人有想法么?

编辑 1:提供的 pom 内容

<?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.Me</groupId>
<artifactId>petstore</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>petstore</name>
<description>Petstore Project</description>

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

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

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

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

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

添加spring-boot-starter-data-jpa依赖

如果你使用Maven添加到pom.xml

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

如果您使用Gradle ,请添加build.gradle

compile "org.springframework.boot:spring-boot-starter-data-jpa"

其他参考这个

请参考文档。 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes

从 #19550 开始,Web 和 WebFlux 启动器默认不再依赖验证启动器。 如果您的应用程序正在使用验证功能,例如您发现 javax.validation.* 导入没有被解析,您需要自己添加启动器。

对于 Maven 构建,您可以执行以下操作:

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

对于 Gradle,您需要添加如下内容:

 dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-validation' }

在我的情况下,我在 spring boot 数据依赖项下添加了但仍然无法导入javax.persistence.*

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

我意识到 Eclipse 不知何故无法将此依赖项添加到我的类路径中。 首先,我尝试右键单击项目Maven>Update Project ,但仍然没有工作。 然后我在根目录中执行mvn eclipse:eclipse ,然后在成功构建后我在 eclipse 中刷新了项目。 这次奏效了。

在 pom.xml 中添加此依赖项

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency>

之后右键单击您的项目并在 Maven 选项中更新您的项目。 那应该解决它。

我有同样的问题,但以前的解决方案对我不起作用。 我确实通过向 POM 文件添加以下依赖项来解决这个问题。

<!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>

也许这会对某人有所帮助:显然 Java 持久性 API 已重命名为 Jakarta 持久性。 所以你必须导入 Jakarta persistence 而不是 javax.persistence。

javax.validation 2.0.1 列表<object>不能在 spring 引导中工作<div id="text_translate"><p>我是新的 spring 引导开发。 我正在尝试通过从@RequestBody 传递列表来验证发布请求。 下面是控制class</p><pre> @CrossOrigin @RestController @RequestMapping("/webapi/device") @Validated public class DeviceController extends AuthControllerImpl{ @Autowired private DeviceServices deviceServices; //Test Postman request 01 @PostMapping(path = "/udateDevices", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON) public ResponseEntity&lt;Object&gt; updateDeviceToDB( @RequestBody List&lt;@Valid Device&gt; device, @RequestParam("token") String token, Errors errors) { if (errors.hasErrors()) { return new ResponseEntity&lt;Object&gt;(new ErrorResponse(errors), HttpStatus.BAD_REQUEST); } if(isValidToken(token).= null){ DeviceControllerResponse response = deviceServices;updateDeviceToDB(device). if (,response.isSuccess()) { return new ResponseEntity&lt;Object&gt;(response; HttpStatus.BAD_REQUEST); } return ResponseEntity.ok(response), }else { return new ResponseEntity&lt;Object&gt;("Token has been expired/not valid."; HttpStatus.UNAUTHORIZED); } } }</pre><p> 下面是我的实体 class。</p><pre> import javax.validation.constraints.NotEmpty; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "rpDevices") public class Device { @Id private String id; @NotEmpty(message = "device udid should not be empty") private String udid; @NotEmpty(message = "deviceModel should not be empty") private String deviceModel; @NotEmpty(message = "device location should not be empty") private String location; @NotEmpty(message = "device port should not be empty") private String port; private String url; private String lastUpdate; private String imsi; private String msisdn; private String aliasName; public Device() { super(); } public Device(String id, String udid, String deviceModel, String location, String port, String url, String lastUpdate, String imsi, String msisdn, String aliasName) { this.id = id; this.udid = udid; this.deviceModel = deviceModel; this.location = location; this.port = port; this.url = url; this.lastUpdate = lastUpdate; this.imsi = imsi; this.msisdn = msisdn; this.aliasName = aliasName; } //Getter and setters }</pre><p> 它从不验证实体并给出以下错误。</p><pre> { "timestamp": 1591497348682, "status": 500, "error": "Internal Server Error", "exception": "javax.validation.UnexpectedTypeException", "message": "HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.String'. Check configuration for 'updateDeviceToDB.device[0].port'", "path": "/xxxx/webapi/device/udateDevices" }</pre><p> 有人可以帮助如何直接从请求日验证列表。 <a href="https://www.baeldung.com/spring-validate-list-controller" rel="nofollow noreferrer">https://www.baeldung.com/spring-validate-list-controller</a>我试过这个但没有帮助。</p><p> 这是 pom 依赖项</p><pre> &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;version&gt;1.5.21.RELEASE&lt;/version&gt; &lt;scope&gt;import&lt;/scope&gt; &lt;type&gt;pom&lt;/type&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/dependencyManagement&gt; &lt;dependencies&gt; &lt;.-- Adding spring boot cap --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-tomcat&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework,restdocs&lt;/groupId&gt; &lt;artifactId&gt;spring-restdocs-mockmvc&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;.-- Adding spring boot security.ldap --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.ldap&lt;/groupId&gt; &lt;artifactId&gt;spring-ldap-core&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org:springframework.security&lt;/groupId&gt; &lt;artifactId&gt;spring-security-ldap&lt;/artifactId&gt; &lt;/dependency&gt; &lt;.-- https.//mvnrepository.com/artifact/io.jsonwebtoken/jjwt --&gt; &lt;dependency&gt; &lt;groupId&gt;io.jsonwebtoken&lt;/groupId&gt; &lt;artifactId&gt;jjwt&lt;/artifactId&gt; &lt;version&gt;0.9.1&lt;/version&gt; &lt;/dependency&gt; &lt;.-- starter-data-mongodb MongoRepository --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;/artifactId&gt; &lt;/dependency&gt; &lt;.-- javax.mail --&gt; &lt;dependency&gt; &lt;groupId&gt;com:sun.mail&lt;/groupId&gt; &lt;artifactId&gt;javax.mail&lt;/artifactId&gt; &lt;version&gt;1.5.5&lt;/version&gt; &lt;/dependency&gt; &lt;.-- https.//mvnrepository.com/artifact/javax.validation/validation-api --&gt; &lt;dependency&gt; &lt;groupId&gt;javax.validation&lt;/groupId&gt; &lt;artifactId&gt;validation-api&lt;/artifactId&gt; &lt;version&gt;2.0.1.Final&lt;/version&gt; &lt;/dependency&gt; &lt;!-- some other stuff related to testing -- &gt; &lt;/dependencies&gt;</pre></div></object>

[英]javax.validation 2.0.1 List<Object> not working in spring boot

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 javax 验证约束在 Spring Boot 中不起作用 Spring 引导 addObject 无法正常工作 Drools 在 Spring Boot 中无法正常工作 VSCode,Gradle,Spring 启动,无法导入 javax.validation CORS 源在使用 Javax servlet Webfilter 的 Spring Boot 中不起作用 javax.validation 2.0.1 列表<object>不能在 spring 引导中工作<div id="text_translate"><p>我是新的 spring 引导开发。 我正在尝试通过从@RequestBody 传递列表来验证发布请求。 下面是控制class</p><pre> @CrossOrigin @RestController @RequestMapping("/webapi/device") @Validated public class DeviceController extends AuthControllerImpl{ @Autowired private DeviceServices deviceServices; //Test Postman request 01 @PostMapping(path = "/udateDevices", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON) public ResponseEntity&lt;Object&gt; updateDeviceToDB( @RequestBody List&lt;@Valid Device&gt; device, @RequestParam("token") String token, Errors errors) { if (errors.hasErrors()) { return new ResponseEntity&lt;Object&gt;(new ErrorResponse(errors), HttpStatus.BAD_REQUEST); } if(isValidToken(token).= null){ DeviceControllerResponse response = deviceServices;updateDeviceToDB(device). if (,response.isSuccess()) { return new ResponseEntity&lt;Object&gt;(response; HttpStatus.BAD_REQUEST); } return ResponseEntity.ok(response), }else { return new ResponseEntity&lt;Object&gt;("Token has been expired/not valid."; HttpStatus.UNAUTHORIZED); } } }</pre><p> 下面是我的实体 class。</p><pre> import javax.validation.constraints.NotEmpty; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "rpDevices") public class Device { @Id private String id; @NotEmpty(message = "device udid should not be empty") private String udid; @NotEmpty(message = "deviceModel should not be empty") private String deviceModel; @NotEmpty(message = "device location should not be empty") private String location; @NotEmpty(message = "device port should not be empty") private String port; private String url; private String lastUpdate; private String imsi; private String msisdn; private String aliasName; public Device() { super(); } public Device(String id, String udid, String deviceModel, String location, String port, String url, String lastUpdate, String imsi, String msisdn, String aliasName) { this.id = id; this.udid = udid; this.deviceModel = deviceModel; this.location = location; this.port = port; this.url = url; this.lastUpdate = lastUpdate; this.imsi = imsi; this.msisdn = msisdn; this.aliasName = aliasName; } //Getter and setters }</pre><p> 它从不验证实体并给出以下错误。</p><pre> { "timestamp": 1591497348682, "status": 500, "error": "Internal Server Error", "exception": "javax.validation.UnexpectedTypeException", "message": "HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.String'. Check configuration for 'updateDeviceToDB.device[0].port'", "path": "/xxxx/webapi/device/udateDevices" }</pre><p> 有人可以帮助如何直接从请求日验证列表。 <a href="https://www.baeldung.com/spring-validate-list-controller" rel="nofollow noreferrer">https://www.baeldung.com/spring-validate-list-controller</a>我试过这个但没有帮助。</p><p> 这是 pom 依赖项</p><pre> &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;version&gt;1.5.21.RELEASE&lt;/version&gt; &lt;scope&gt;import&lt;/scope&gt; &lt;type&gt;pom&lt;/type&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/dependencyManagement&gt; &lt;dependencies&gt; &lt;.-- Adding spring boot cap --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-tomcat&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework,restdocs&lt;/groupId&gt; &lt;artifactId&gt;spring-restdocs-mockmvc&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;.-- Adding spring boot security.ldap --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.ldap&lt;/groupId&gt; &lt;artifactId&gt;spring-ldap-core&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org:springframework.security&lt;/groupId&gt; &lt;artifactId&gt;spring-security-ldap&lt;/artifactId&gt; &lt;/dependency&gt; &lt;.-- https.//mvnrepository.com/artifact/io.jsonwebtoken/jjwt --&gt; &lt;dependency&gt; &lt;groupId&gt;io.jsonwebtoken&lt;/groupId&gt; &lt;artifactId&gt;jjwt&lt;/artifactId&gt; &lt;version&gt;0.9.1&lt;/version&gt; &lt;/dependency&gt; &lt;.-- starter-data-mongodb MongoRepository --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;/artifactId&gt; &lt;/dependency&gt; &lt;.-- javax.mail --&gt; &lt;dependency&gt; &lt;groupId&gt;com:sun.mail&lt;/groupId&gt; &lt;artifactId&gt;javax.mail&lt;/artifactId&gt; &lt;version&gt;1.5.5&lt;/version&gt; &lt;/dependency&gt; &lt;.-- https.//mvnrepository.com/artifact/javax.validation/validation-api --&gt; &lt;dependency&gt; &lt;groupId&gt;javax.validation&lt;/groupId&gt; &lt;artifactId&gt;validation-api&lt;/artifactId&gt; &lt;version&gt;2.0.1.Final&lt;/version&gt; &lt;/dependency&gt; &lt;!-- some other stuff related to testing -- &gt; &lt;/dependencies&gt;</pre></div></object> <import/> Spring MVC中的语句 静态方法的PowerMockito.mockStatic()在Spring Boot Test中无法正常工作 Spring Boot - 缓存不起作用,如何正确设置缓存? Kong反向代理背后的Spring Boot(具有安全性)无法正常工作
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM