Обращение к ошибке гибернации: вызвано: java.lang.ClassNotFoundException: net.bytebuddy.NamingStrategy $ SuffixingRandom $ BaseNameResolver

Я получаю сообщение об ошибке при запуске этого кода в Eclipse. Я создал файл Student.java:

public class Student {
    private int id;
    private String name;
    private String email;
    private int marks;
    
    // getters/setters
}

Я создал файл Student.hbm.xml:

<!DOCTYPE hibernate-mapping PUBLIC 
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
          
    <hibernate-mapping>
    <class name = "bean.Student" table = "student">
            <id name = "id" column = "sid"></id>
            <property name = "name"  column = "sname"></property>
            <property name = "email" column = "semail"></property>
            <property name = "marks" column = "smarks"></property>
    </class>
    </hibernate-mapping>

Я создал файл hibernate.cfg.xml:

 <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
        
    <hibernate-configuration>
    <session-factory>
        <property name = "connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name = "connection.url">jdbc:oracle:thin:@localhost:1521:wind</property>
        <property name = "connection.username">localuser</property>
        <property name = "connection.password">localuser</property>
        <property name = "connection.poolsize">5</property>
            
        <property name = "dialect">org.hibernate.dialect.OracleDialect</property>
            
        <mapping resource = "resources/student.hbm.xml"/>
            
    </session-factory>
    </hibernate-configuration>

Я создал файл client.java:

    package testclass;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import bean.Student;
    
    public class Client {
    public static void main(String[] args) {
        
        Student st = new Student();
        st.setId(11);
        st.setEmail("[email protected]");
        st.setMarks(98);
        st.setName("Swapnil");  
        
        // Student object is transient here..
        // When it is attached to hibernate object then it will become persistent object.
        
        
        Configuration cfg = new Configuration();
        cfg.configure("resources/hibernate.cfg.xml");
        
        SessionFactory sf = cfg.buildSessionFactory();
        Session s =sf.openSession();
        
        s.save(st);
        
        // Student object is persisten now. Even gc() will not take away this object
        
        s.beginTransaction().commit();
        // Student object will goto Database side.
        
        s.evict(st);
    }
}

Я попытался добавить много файлов jar, но не вижу записи о студентах в моей базе данных Oracle.

Полная ошибка:

    Jul 17, 2018 8:11:09 PM org.hibernate.Version logVersion
    INFO: HHH000412: Hibernate Core {5.3.2.Final}
    Jul 17, 2018 8:11:09 PM org.hibernate.cfg.Environment <clinit>
    INFO: HHH000206: hibernate.properties not found
    Exception in thread "main" java.lang.NoClassDefFoundError: net/bytebuddy/NamingStrategy$SuffixingRandom$BaseNameResolver
        at org.hibernate.cfg.Environment.buildBytecodeProvider(Environment.java:357)
        at org.hibernate.cfg.Environment.buildBytecodeProvider(Environment.java:352)
        at org.hibernate.cfg.Environment.<clinit>(Environment.java:246)
        at org.hibernate.boot.registry.StandardServiceRegistryBuilder.<init>(StandardServiceRegistryBuilder.java:78)
        at org.hibernate.boot.registry.StandardServiceRegistryBuilder.<init>(StandardServiceRegistryBuilder.java:67)
        at org.hibernate.cfg.Configuration.reset(Configuration.java:158)
        at org.hibernate.cfg.Configuration.<init>(Configuration.java:124)
        at org.hibernate.cfg.Configuration.<init>(Configuration.java:118)
        at testclass.Client.main(Client.java:21)
    Caused by: java.lang.ClassNotFoundException: net.bytebuddy.NamingStrategy$SuffixingRandom$BaseNameResolver
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 9 more
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
0
11 905
7

Ответы 7

У меня такая же проблема: оказывается, файл библиотеки net-buddy был поврежден (ошибка при загрузке?).

Попробуйте удалить jar-файлы в ~ / .m2 / repository / net / bytebuddy и пересобрать приложение.

Надеюсь это поможет.

это только для декораций проекта MAVEN.

LKF 20.01.2019 10:15

Просто добавьте файл jar: byte-buddy-1.X.XX.jar

Источник: https://github.com/raphw/byte-buddy

maven: https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy/1.9.7

Только сборка JAR binry: http://central.maven.org/maven2/net/bytebuddy/byte-buddy/1.9.7/byte-buddy-1.9.7.jar

Поместите jar-файлы гибернации в путь к классам. Скорее всего, это решит проблему.

В модульной системе Java это все еще появляется - Вам нужно в информации о модуле указать, что ваш модуль использует bytebuddy

requires net.bytebuddy;

что заставит вас поместить его в путь к классам :)

Зависимость bytebuddy используется Hibernate. У меня была аналогичная проблема, и я решил свою проблему, добавив следующую зависимость в свой pom.xml.

<dependency>
    <groupId>net.bytebuddy</groupId>
    <artifactId>byte-buddy-dep</artifactId>
    <version>1.10.9</version>
</dependency>

Перейдите к этому ссылка на сайт, чтобы получить последнюю версию зависимости maven. Это решение должно работать для проектов на основе Spring Boot.

Попробуйте добавить byte-buddy-X.XX.XX.jar в путь к классам проекта. Если U работает в Eclipse, просто: щелкните правой кнопкой мыши имя проекта, затем выберите «Свойства» -> «Путь сборки Java» -> «Библиотеки» и добавьте в путь к классам этот файл.

Для меня было полезно удалить byte-buddy-X.XX.XX.jar из Modulepath, а затем добавить его в Classpath.

У меня была такая же проблема с этой библиотекой.

В пути сборки Java (свойства проекта) вы добавляли файлы jar в путь к модулю или путь к классам? Изначально я добавил jar-файлы в Modulepath. При отладке проблемы я решил переместить jar-файлы в Classpath. Это решило проблему.

Другой вариант - преобразовать проект в проект Maven.

  1. Щелкните правой кнопкой мыши имя проекта в проводнике пакетов.

  2. Прокрутите вниз до Настроить

  3. Выберите преобразовать в проект Maven.

  4. Примите все значения по умолчанию и нажмите Готово.

Другие вопросы по теме