最近项目分包以后,很多实体类的扫描需要单个配置,觉得很麻烦,就引用了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
以上是解决相对路径的解决方案,请参考