最近项目分包以后,很多实体类的扫描需要单个配置,觉得很麻烦,就引用了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


以上是解决相对路径的解决方案,请参考

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐