Spring Boot - операторы импорта javax работают неправильно

Я только начал работать со Spring Boot и в настоящее время следую этому уроку с небольшими изменениями в именовании и использовании их собственной версии Eclipse, в который встроен этот генератор.

Когда я добираюсь до первого фрагмента кода, я пытаюсь просто скопировать операторы import для начала,

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>

9 ответов

Решение

Добавлять 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"

для других обратитесь к этому.

Возможно, это кому-то поможет: судя по всему, Java persistence api переименован в Jakarta persistence. Поэтому вам придется импортировать постоянство Jakarta вместо javax.persistence.

Пожалуйста, обратитесь к документации. 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'
}

У меня была такая же проблема, но предыдущие решения не помогли мне. Я решаю проблему, добавляя следующую зависимость в файл 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>

У меня также была такая же проблема, и я решил ее, добавив следующую зависимость в файл POM.

      <dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>

Шаги решения:

  1. открытый терминал
  2. Перейдите в корневой каталог с помощью команды « cd ».
  3. вывести список невидимых папок с помощью « ls -a »
  4. вы должны увидеть файл .m2. В файле .m2 есть весь репозиторий maven.
  5. Удалите maven с помощью команды « sudo rm -r .m2 ».
  6. Запустите проект еще раз

В моем случае я добавил ниже зависимость данных загрузки Spring, но все еще не могу импортировать 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 option обновите ваш проект. Это должно исправить это.

Я также столкнулся с той же проблемой. Добавьте эту зависимость в свой pom.xml, все будет работать.

      <dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>
Другие вопросы по тегам