M1芯片Mac下IntelliJ使用Java运行Hibernate5.6.0报错如何解决
问题解决方案
核心配置文件找不到异常修复
- 修正
hibernate.cfg.xml存放路径
Java/Maven/Gradle项目默认仅会将src/main/resources目录下的文件纳入运行时类路径,Hibernate默认从类路径根目录加载配置文件,你需要将hibernate.cfg.xml从源码根目录移动到src/main/resources目录下。
如果你坚持要将配置文件放在src/main/java目录下,需要修改构建工具配置,以Maven为例,在pom.xml的<build>节点下添加如下配置,让构建工具识别java目录下的xml文件:<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> - 确认IDEA资源目录标记正确
打开IDEA的项目结构面板(快捷键⌘;/Ctrl+Alt+Shift+S),进入Modules标签页,确认src/main/resources目录被标记为「Resources」类型,未正确标记的目录不会被IDEA纳入运行时类路径。 - 检查加载代码配置
如果你在调用configure()方法时传入了自定义路径,需要确认路径与类路径下的文件位置匹配:- 配置文件直接放在resources根目录:直接调用无参方法
new Configuration().configure()即可 - 配置文件放在resources下的子目录(如config):需要传入对应路径
new Configuration().configure("config/hibernate.cfg.xml")
- 配置文件直接放在resources根目录:直接调用无参方法
log4j警告修复
该警告是因为缺少log4j配置文件,在src/main/resources目录下新增log4j.properties文件,填入基础配置即可:
log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
缓存清理
完成上述修改后如果仍报错,执行IDEA的缓存清理重启操作(File > Invalidate Caches... > Invalidate and Restart),再重新构建项目(Build > Rebuild Project)即可。
内容的提问来源于stack exchange,提问作者Felix Riemer
相关产品推荐
相关产品推荐

