java hibernate 程序报错,如何解决?

问题遇到的现象和发生背景

学校要求对着书做毕业设计,课题是《基于hibernate的通讯录系统》,我按照书上介绍一步一步做应该没有问题,但是程序却报错。使用的语言是java,开发平台使用的是EclipseEE,用的是jdk8,框架使用的是hibernate。

遇到的现象和发生背景,请写出第一个错误信息

我自己写程序的时候就报错,我以为是我程序错误,为保证绝对正确我复制了书作者提供的程序,依旧报错。

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

报错的完整程序如下:

package frame;
import com.mr.contact.swing.ContactFrame;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import com.mr.contact.dao.Dao;
import com.mr.contact.dao.DaoFactory;
import com.mr.contact.swing.FixedTable;
import pojo.Customer;

/**
 *   主窗体
 */
public class MainFrame extends ContactFrame{
    private Dao dao;                            // 数据库接口
    private FixedTable table;                    // 通讯录表格
    private DefaultTableModel tableModel;        // 定义表格模型对象模型

    /**
     * 构造方法
     */
     public MainFrame() {
         setTitle("通讯录系统"); //窗体标题
         init();             //组件初始化
         validate();         //重新加载组件
     }
     /**
      * 组件初始化
      */
     protected void init() {
         super.init();                                        // 调用父类init()方法
         dao = DaoFactory.getDao();                            // 实例化数据库接口
         table = getTable();                                    // 创建指定表格模型的表格
         table.setCellEditable(false);                            // 让表格不可编辑
         initTable();                                            // 初始化表格数据
     }// init()结束

     /**
      * 初始化表格数据
      */
     public void initTable() {
         tableModel = getUsableModleSoure();                    // 获取所有有效客户信息
         table.setModel(tableModel);                            // 客户信息表格加载数据模型
     }// initTable()

     /**
      * 查询所有有效客户信息
      * 
      * @return表格数据模型
      */
     private DefaultTableModel getUsableModleSoure() {
         List usableList = dao.selectUsableCustomer();    // 获取所有有效客户
         return assembledModleSoure(usableList);                // 返回有所有有效客户表格数据模型
     }// getUsableModleSoure()结束

     /**
      * 根据不同的客户集合,获取相应的表格数据模型
      * 
      * @param usableList -客户集合
      * @return表格数据模型
      */
     private DefaultTableModel assembledModleSoure(List usableList) {
         int customerCount = usableList.size();                    // 获取集合的客户数量
         String[] columnNames = { "编号", "姓名", "性别", "出生日期", "工作单位","职位",
                                  "工作地点", "家庭住址" };        // 定义表格列名数组
         String[][] tableValues = new String[customerCount][8];    // 创建表格数据数组
         for (int i = 0; i// 遍历表格所有行
             Customer cust = usableList.get(i);                // 获取行用户对象
             tableValues[i][0] = "" + cust.getId();                // 第一列为编号
             tableValues[i][1] = cust.getName();                // 第二列为名称
             tableValues[i][2] = cust.getSex();                // 第三列为性别
             tableValues[i][3] = cust.getBirth();                // 第四列为出生日期
             tableValues[i][4] = cust.getWork_unit();            // 第五列为公司名称
             tableValues[i][5] = cust.getRole();                // 第六位为职位
             tableValues[i][6] = cust.getWork_addr();            // 第七列为公司地址
             tableValues[i][7] = cust.getHome_addr();            // 第八列为家庭住址
         } // for结束
         // 根据列名数组和数据数组创建表格数据模型
         DefaultTableModel tmp = new DefaultTableModel(tableValues, columnNames);
         return tmp;
     }// assembledModleSoure()结束

     /**
      * 主方法
      */
     public static void main(String[] args) {
         new MainFrame();  //实例化主窗体
     }

}


运行结果及详细报错内容
完整的报错信息如下:
119, 2023 2:41:32 下午 org.hibernate.cfg.Environment 
信息: Hibernate 3.2.0
119, 2023 2:41:32 下午 org.hibernate.cfg.Environment 
信息: hibernate.properties not found
119, 2023 2:41:32 下午 org.hibernate.cfg.Environment buildBytecodeProvider
信息: Bytecode provider name : cglib
119, 2023 2:41:32 下午 org.hibernate.cfg.Environment 
信息: using JDK 1.4 java.sql.Timestamp handling
119, 2023 2:41:32 下午 org.hibernate.cfg.Configuration configure
信息: configuring from resource: /hibernate.cfg.xml
119, 2023 2:41:32 下午 org.hibernate.cfg.Configuration getConfigurationInputStream
信息: Configuration resource: /hibernate.cfg.xml
119, 2023 2:41:32 下午 org.hibernate.cfg.Configuration addResource
信息: Reading mappings from resource: pojo/User.hbm.xml
119, 2023 2:41:32 下午 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
信息: Mapping class: pojo.User -> tb_users
119, 2023 2:41:32 下午 org.hibernate.cfg.Configuration addResource
信息: Reading mappings from resource: pojo/Customer.hbm.xml
119, 2023 2:41:32 下午 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
信息: Mapping class: pojo.Customer -> tb_customer_info
119, 2023 2:41:32 下午 org.hibernate.cfg.Configuration addResource
信息: Reading mappings from resource: pojo/Communication.hbm.xml
119, 2023 2:41:32 下午 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
信息: Mapping class: pojo.Communication -> tb_communication_info
119, 2023 2:41:32 下午 org.hibernate.cfg.Configuration doConfigure
信息: Configured SessionFactory: null
119, 2023 2:41:32 下午 org.hibernate.cfg.HbmBinder bindCollectionSecondPass
信息: Mapping collection: pojo.Customer.communicationList -> tb_communication_info
119, 2023 2:41:32 下午 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: Using Hibernate built-in connection pool (not for production use!)
119, 2023 2:41:32 下午 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: Hibernate connection pool size: 20
119, 2023 2:41:32 下午 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: autocommit mode: false
119, 2023 2:41:32 下午 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://127.0.0.1:3306/test02
119, 2023 2:41:32 下午 org.hibernate.connection.DriverManagerConnectionProvider configure
信息: connection properties: {password=****, user=root}
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: RDBMS: MySQL, version: 5.7.31-log
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC driver: MySQL Connector Java, version: mysql-connector-java-5.1.36 ( Revision: 4fc1f969f740409a4e03750316df2c0e429f3dc8 )
119, 2023 2:41:32 下午 org.hibernate.dialect.Dialect 
信息: Using dialect: org.hibernate.dialect.MySQLDialect
119, 2023 2:41:32 下午 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
信息: Using default transaction strategy (direct JDBC transactions)
119, 2023 2:41:32 下午 org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
信息: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Automatic flush during beforeCompletion(): disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Automatic session close at end of transaction: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC batch size: 15
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC batch updates for versioned data: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Scrollable result sets: enabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: JDBC3 getGeneratedKeys(): enabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Connection release mode: auto
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Maximum outer join fetch depth: 2
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Default batch fetch size: 1
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Generate SQL with comments: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Order SQL updates by primary key: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
信息: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
119, 2023 2:41:32 下午 org.hibernate.hql.ast.ASTQueryTranslatorFactory 
信息: Using ASTQueryTranslatorFactory
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Query language substitutions: {}
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: JPA-QL strict compliance: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Second-level cache: enabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Query cache: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory createCacheProvider
信息: Cache provider: org.hibernate.cache.NoCacheProvider
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Optimize cache for minimal puts: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Structured second-level cache entries: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Statistics: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Deleted entity synthetic identifier rollback: disabled
119, 2023 2:41:32 下午 org.hibernate.cfg.SettingsFactory buildSettings
信息: Default entity-mode: pojo
119, 2023 2:41:32 下午 org.hibernate.impl.SessionFactoryImpl 
信息: building session factory
Exception in thread "main" java.lang.ExceptionInInitializerError
    at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167)
    at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
    at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
    at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:111)
    at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.(AbstractEntityTuplizer.java:135)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:55)
    at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.(EntityEntityModeToTuplizerMapping.java:56)
    at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:269)
    at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:425)
    at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:109)
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
    at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:226)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1218)
    at com.mr.contact.hibernate.HibernateInitialize.(HibernateInitialize.java:20)
    at com.mr.contact.dao.DAOimpl.selectUsableCustomer(DAOimpl.java:236)
    at frame.MainFrame.getUsableModleSoure(MainFrame.java:51)
    at frame.MainFrame.initTable(MainFrame.java:41)
    at frame.MainFrame.init(MainFrame.java:34)
    at com.mr.contact.swing.ContactFrame.(ContactFrame.java:50)
    at frame.MainFrame.(MainFrame.java:21)
    at frame.MainFrame.main(MainFrame.java:86)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @6f27a732
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
    at net.sf.cglib.core.ReflectUtils$2.run(ReflectUtils.java:56)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
    at net.sf.cglib.core.ReflectUtils.(ReflectUtils.java:46)
    ... 28 more
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

一开始我使用的是最新版的Eclipse,它只支持jdk17以上,书上要求使用jdk8,我以为是这个问题,于是重新装了一个旧版本的eclipse,改为jdk8,结果依然报相同的错误。

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

希望各位能帮帮我这个非计算机专业的应届毕业生,卡在这一步进行不下去了很难受。

启动项目的时候,添加参数:java --add-opens java.base/java.lang=ALL-UNNAMED

报错出现在51行连接数据库查询数据,不清楚你安装了数据库没有,也没有看到你初始化数据库连接的代码

报初始化错误,看你的错误信息可能是在启动过程中hibernate检查实体类和数据表字段时,检查出不一致,请检查你的数据表的字段和字段类型,与java代码中的实体类中的是否一致,尤其是关于id字段,是否设置了自增长什么的,

你的java环境变量依旧是17,你把环境变量配置为jdk 1.8即可

从报错的完整程序看:这是一个Hibernate的运行时错误,在代码中没有找到hibernate.cfg.xml配置文件。
您需要将hibernate.cfg.xml文件放在项目的根目录中,或者在hibernate.cfg.xml文件的路径中指定文件的正确位置。
建议检查hibernate.cfg.xml文件中的配置,确保数据库连接信息是正确的,确保相关jar文件已经正确引入
依靠这些,应该就能解决问题了。

有可能是没有找到数据源,可能是hibernate.cfg.xml文件中没有正确配置数据源。

我的建议是采用现代IDE idea 趁你还没毕业可以白嫖一年的idea,书上的内容好多都是过时的。

错误日志第五行:hibernate.properties not found,检查一下。

你这个是jdk还没有调整过来,你重新设置下你的jdk试试,参考下面这个博客
https://blog.csdn.net/a754315344/article/details/98033274