POM.xml работает нормально, но импорт java файлов не разрешен

116
9

Я не использовал Maven много, но я знаю, что он сначала проверяет локальный репозиторий на нужные файлы jar, и если он не найден там, он загружает его из упомянутого репозитория. В моей программе файлы jar присутствуют в нужном месте внутри локального репозитория. Файл pom.xml также работает нормально, но при этом программа не может найти импорт в любом из файлов.

Класс тестирования в Программе:

import javax.persistence.Cacheable;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class TestAnnotation {
public static void main(String args[]){
EntityManagerFactory factory=Persistence.createEntityManagerFactory("annotation");
EntityManager manager=factory.createEntityManager();
EntityTransaction transaction=manager.getTransaction();
transaction.begin();
manager.persist(new Message("My Entity Test One More Example New"));
transaction.commit();
System.out.println("First time calling Message Object");
getMessage(manager,23);
System.out.println("Second time calling Message Object");
getMessage(manager,23);

factory.close();
}

public static void getMessage(EntityManager manager,long id){
EntityTransaction transaction1=manager.getTransaction();
transaction1.begin();
Query q=manager.createQuery("from Message m where m.id="+id);
Message m=(Message)q.getSingleResult();
System.out.println(m.getMessage_text());
transaction1.commit();
}
}

Простой POJO в программе:

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name="MESSAGES")
@Cache(region = "messages", usage = CacheConcurrencyStrategy.READ_WRITE)

public class Message {

Message(){

}
Message(String message){
message_text=message;
}
@Id @GeneratedValue
@Column(name="MESSAGE_ID")
public Long id;
@Column(name="MESSAGE_TEXT")
public String message_text;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMessage_text() {
return message_text;
}
public void setMessage_text(String message_text) {
this.message_text = message_text;
}
}

И, наконец, проблемный файл 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>HibernateWithAnnotation</groupId>
<artifactId>HibernateWithAnnotation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HibernateWithAnnotation</name>
<repositories>
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.1-Final</version>

</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.2.0.Final</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.1-Final</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
</dependency>

<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>

<!-- logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>

<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.4.5</version>
</dependency>

</dependencies>
</project>

pom.xml не содержит никакой ошибки как таковой. Он отлично подходит для целей - clean package. Но все же импорт, используемый в моих java файлах, не разрешен. Где-то должно быть что-то глупое. Пожалуйста, укажите это мне.

спросил(а) 2021-01-28T01:30:25+03:00 4 месяца, 3 недели назад
1
Решение
63

Перейдите в каталог, содержащий pom.xml. откройте командную строку и выполните следующую команду:

mvn install

Затем вернитесь в eclipse, обновите свой проект. Все зависимости будут настроены

ответил(а) 2021-01-28T01:30:25+03:00 4 месяца, 3 недели назад
63

Я предполагаю, что вы используете eclipse..

Попробуйте выполнить mvn eclipse:eclipse. Это устанавливает все необходимые записи пути к классам.

ответил(а) 2021-01-28T01:30:25+03:00 4 месяца, 3 недели назад
45

Зависимости Maven используются только во время выполнения. Если вы используете какой-либо IDE для кодирования, вам нужно добавить необходимые банки в путь к классам, чтобы при вводе вам были предложены предложения и ссылки для вашего ключевого слова.

ответил(а) 2021-01-28T01:30:25+03:00 4 месяца, 3 недели назад
45

Есть две разные вещи: разработка с IDE и создание всего с maven.

Maven - это отдельная вещь, и она ничего не знает о IDE, которые вы используете.

Вы должны либо настроить любимый плагин IDE-maven, либо просто добавить банки в путь к классам вручную

ответил(а) 2021-01-28T01:30:25+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема