最近項目分包以後,很多實體類的掃描需要單個配置,覺得很麻煩,就引用了jar-file的引用方式,但是加載的時候,會因爲容器的表現而出現一些差異.
調試的頭都大了,翻閱了很多資料,其實jar-file的引入路徑是十分重要的.
其中會出現如下問題:
1.java.lang.RuntimeException: error trying to scan <jar-file>
2.java.lang.RuntimeException: Archive browser cannot handle protocol: jndi:/localhost/
3.Cannot resolve jar-file entry in persistence unit without root URL
以上問題其實都是因爲沒有找到根路徑,根據persistence的原始文檔描述,persistence加載的根路徑到底是什麼?
其實就是META-INF文件夾. 在spring的配置文件中聲明entityManagerFactory的時候,就需要引入根路徑:
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
該路徑可以根據實際情況進行調整.
那麼persistence-unit 中的jar-file的路徑該怎麼設置呢?
<jar-file>classpath:../lib/abc.jar</jar-file>
其實abc.jar的實際路徑是web-inf/lib/abc.jar
以上是解決相對路徑的解決方案,請參考