在 MyEclipse 中執行 Hibernate 反向工程生成實體類時,控制台報錯:
!ENTRY org.eclipse.core.jobs 4 2 2010-12-27 14:20:11.625
!MESSAGE An internal error occurred during: "Generating Artifacts".
!STACK 0
java.lang.IllegalArgumentException: Path must include project and resource name: /
at org.eclipse.core.runtime.Assert.isLegal(Assert.java:62)
at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:1631)
at org.eclipse.core.internal.resources.Container.getFile(Container.java:123)
at com.genuitec.eclipse.hibernate.util.HibernateUtils.getConfigFile(HibernateUtils.java:510)
...
錯誤堆疊指向 HibernateUtils.getConfigFile() 解析路徑失敗。MyEclipse 將 Hibernate 配置文件路徑儲存在專案根目錄下的 .myhibernatedata 隱藏文件中,若其中 configFile 屬性路徑格式不正確(如缺少專案名稱前綴),會導致 Eclipse 資源模型無法定位文件,拋出 Path must include project and resource name。
.myhibernatedata 文件(隱藏文件,需開啟「顯示隱藏文件」)configFile 屬性,格式統一為:/專案名稱/相對路徑/配置文件名configFile=conf/applicationContext.xml
configFile=/MyProject/conf/applicationContext.xml
#Sat Sep 19 15:30:33 CST 2009
genBasicCompId=true
sessionFactoryName=liss.samples.myssh2.domain.HibernateSessionFactory
profile=
daoSFId=
version=3.3
jndiPath=
springDaoFile=
useJavaTypes=true
keyGenerator=increment
libInstallFolder=
addLibs2Project=false
genVersionTag=true
sessionFactoryId=
basePersistenceClass=
reSettingsFile=/myssh2/hibernate.reveng.xml
configFile=/myssh2/conf/applicationContext.xml
createConfigFile=false
addLibs2Classpath=false
baseDaoClass=BaseHibernateDAO
hibernate.reveng.xml 與數據庫連接/.myhibernatedata 加入版本控制此錯誤本質是 Eclipse 資源路徑解析失敗,通過修正 .myhibernatedata 中 configFile 為「專案名開頭的絕對路徑」即可徹底解決。養成檢查隱藏配置文件路徑正確性的習慣,可避免 90% 的 MyEclipse Hibernate 反向工程異常。