Hibernate. NoClassDefFoundError

176
08 декабря 2019, 13:30

У меня есть Maven проект на 2 модуля. Во втором модуле я поставил Hibernate. К первому модулю не подключен Hibernate, но он импортирует класс-сущность из второго модуля. При этом, при компиляции первого модуля возникают исключения:

java.lang.NoClassDefFoundError: com/vladhuk/roshambo/server/models/Account
    at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3167)
    at java.base/java.lang.Class.getMethodsRecursive(Class.java:3308)
    at java.base/java.lang.Class.getMethod0(Class.java:3294)
    at java.base/java.lang.Class.getMethod(Class.java:2107)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:270)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: com.vladhuk.roshambo.server.models.Account
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 7 more

(Account - это тот самый импортируемый класс-сущность). Пробовал подключать Hibernate зависимость и к первому модулю, и добавлять в него hibernate.cfg.xml, но безрезультатно. Проблема как понимаю в том, что первый модуль не распознает класс-сущность, потому как до этого это был обычный класс и все было хорошо.

Второй модуль импортировал в первый таким способом:

<dependency>
    <groupId>com.vladhuk</groupId>
    <artifactId>server</artifactId>
    <version>0.9-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>

Показывать еще что-то из pom'а не считаю нужным. Просили еще показать класс Account, но в нем ничего особенного:

package com.vladhuk.roshambo.server.models;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "account")
public class Account implements Serializable {
    @Id
    @GeneratedValue
    private int id;
    private String username = "";
    private String password = "";
    public Account() {}
    public Account(String username) {
        this.username = username;
    }
    public Account(String username, String password) {
        this.username = username;
        this.password = password;
    }
    // Getters & setters
}
Answer 1

В хибернейте нужно указывать ту сущность, которую используешь т.е прописывать ее в конфиге. Добавь зависимость на родительский модуль(она у тебя есть), зайди в конфигурируешь хайбера и пропиши путь к энтете.

READ ALSO
Как создавать папку в папке

Как создавать папку в папке

Хотел бы узнать, как можно создать папку в папке, вызывая одну функцию

225
Android Studio Возникает ошибка java.lang.NullPointerException

Android Studio Возникает ошибка java.lang.NullPointerException

Помогите пожалуйста решить проблему

190
Проблема с конфигурацией и работой Event listener Spring

Проблема с конфигурацией и работой Event listener Spring

Возникла проблема, которую не могу побороть уже второй день

200
Имитация движений в приложении Android

Имитация движений в приложении Android

Могу ли я имитировать действия пользователя в стороннем приложении? Например после выполнения, каких-либо действий в моем приложении, я через...

190