Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用<;引用JPA persistence.xml中的JAR文件时出错;jar文件>;_Java_Hibernate_Jpa - Fatal编程技术网

Java 使用<;引用JPA persistence.xml中的JAR文件时出错;jar文件>;

Java 使用<;引用JPA persistence.xml中的JAR文件时出错;jar文件>;,java,hibernate,jpa,Java,Hibernate,Jpa,我们有一个JavaEE项目,由多个JAR组成,其中几个包含实体。应用程序打包为具有以下结构的EAR: app.ear lib/core.jar (containing META-INF/persistence.xml) lib/module1.jar (contains entities) lib/module2.jar (contains entities) ... 在persistence.xml中,我们尝试引用包含以下实体的JAR文件: <persi

我们有一个JavaEE项目,由多个JAR组成,其中几个包含实体。应用程序打包为具有以下结构的EAR:

app.ear
    lib/core.jar (containing META-INF/persistence.xml)
    lib/module1.jar (contains entities)
    lib/module2.jar (contains entities)
    ...
在persistence.xml中,我们尝试引用包含以下实体的JAR文件:

<persistence ...>
  <persistence-unit name="someName">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

    <jar-file>module1.jar</jar-file>
    <jar-file>module2.jar</jar-file>

    ...
  </persistence-unit>
</persistence>

org.hibernate.jpa.HibernatePersistenceProvider
模块1.jar
module2.jar
...
我看了一下(也在中引用),我的配置应该是正确的,对吗?我们的设置对应于JPA规范第8.2.1.6.3节中的示例2。但是,当我部署应用程序时,会收到以下错误消息:

java.lang.IllegalArgumentException: File [module1.jar] referenced by given URL [file:module1.jar] does not exist
    at org.hibernate.jpa.boot.archive.internal.StandardArchiveDescriptorFactory.buildArchiveDescriptor(StandardArchiveDescriptorFactory.java:73)
    at org.hibernate.jpa.boot.archive.internal.StandardArchiveDescriptorFactory.buildArchiveDescriptor(StandardArchiveDescriptorFactory.java:48)
    at org.hibernate.jpa.boot.scan.spi.AbstractScannerImpl.buildArchiveDescriptor(AbstractScannerImpl.java:95)
    at org.hibernate.jpa.boot.scan.spi.AbstractScannerImpl.scan(AbstractScannerImpl.java:63)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.scan(EntityManagerFactoryBuilderImpl.java:723)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:219)
    at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:51)
    at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:182)
    at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:131)
    at org.hibernate.ejb.HibernatePersistence.getEntityManagerFactoryBuilderOrNull(HibernatePersistence.java:93)
    at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:88)
    at org.hibernate.ejb.HibernatePersistence.getEntityManagerFactoryBuilderOrNull(HibernatePersistence.java:101)
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:69)
    ... 114 more
java.lang.IllegalArgumentException:给定URL[File:module1.jar]引用的文件[module1.jar]不存在
位于org.hibernate.jpa.boot.archive.internal.StandardArchiveDescriptorFactory.buildArchiveDescriptor(StandardArchiveDescriptorFactory.java:73)
位于org.hibernate.jpa.boot.archive.internal.StandardArchiveDescriptorFactory.buildArchiveDescriptor(StandardArchiveDescriptorFactory.java:48)
位于org.hibernate.jpa.boot.scan.spi.AbstractScannerImpl.buildArchiveDescriptor(AbstractScannerImpl.java:95)
位于org.hibernate.jpa.boot.scan.spi.AbstractScannerImpl.scan(AbstractScannerImpl.java:63)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.scan(EntityManagerFactoryBuilderImpl.java:723)
位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl。(EntityManagerFactoryBuilderImpl.java:219)
位于org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:51)
位于org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:182)
在org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderRonull(HibernatePersistenceProvider.java:131)
位于org.hibernate.ejb.HibernatePersistence.getEntityManagerFactoryBuilderOrNull(HibernatePersistence.java:93)
在org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:88)
位于org.hibernate.ejb.HibernatePersistence.getEntityManagerFactoryBuilderOrNull(HibernatePersistence.java:101)
在org.hibernate.jpa.HibernatePersistenceProvider.createEntityManager工厂(HibernatePersistenceProvider.java:69)
... 114多
我也尝试过其他路径,例如lib/module1.jar,但结果总是一样的。如果有必要,我们将使用Hibernate 4.3.5.Final。有什么好处

更新:


显然,这是Hibernate中的一个古老错误:。有人对此有很好的解决方法吗?从他们的Jira判断,这个问题短期内不会得到解决。

你找到解决办法了吗。我也面临同样的问题。你使用的是什么Hibernate版本?已在5.0.7中关闭,因此如果您使用的是较低版本,则可以尝试更新到该版本。我们通过为Hibernate制作一个补丁来解决这个问题;我们仍在使用此修补程序。我们也对它提出了拉取请求,但它在所有环境中都不起作用,因此被拒绝。后来,Hibernate团队自行修复了这个bug。所以我想说,你最好选择最新版本的Hibernate。