Mark Anderson opened SPR-15304 and commented

When using LocalContainerEntityManagerFactoryBean without any JPA xml configurations the following error is seen Invocation of init method failed; nested exception is javax.persistence.PersistenceException: Unable to resolve persistence unit root URL My bean is defined as follows

<bean id="configEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="configDataSource"/>
    <property name="persistenceUnitName" value="configPersistenceUnit" />
    <property name="jpaVendorAdapter">
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="mappingResources">
      <array value-type="java.lang.String">
        <value>mappings/mapping1.hbm.xml</value>
        <value>mappings/mapping2.hbm.xml</value>
      </array>
    </property>
    <property name="jpaProperties">
      <value>
        hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
        hibernate.show_sql=false
        hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
        hibernate.cache.use_second_level_cache=true
        net.sf.ehcache.configurationResourceName=file:${conf.dir}/ehcache.xml
      </value>
    </property>
  </bean>

This issue seems to be a further variant of #13474, #15859 and #18819.

The error only occurs when my application is deployed with all code and resources in jar files. I can run without error when the classes and resources are within directories on the classpath.

As a workaround I can add the following and my application will start.

<property name="persistenceUnitRootLocation" value="file:${java.io.tmpdir}" />

Affects: 4.3.6

Issue Links: - #13474 JPA without persistence.xml fails when all classpath items are jars - #18819 DefaultPersistenceUnitManager.determineDefaultPersistenceUnitRootUrl fails when run from a shaded jar - #15859 orm.xml should be recognized by default if using JPA

Comment From: spring-projects-issues

Piotr Tempes commented

I am not sure if this helps, but I noticed this error when I run integration tests of my modules following way: mvn clean install -f ../project_dir/pom.xml key thing is ".." in the path.

funny thing is that when I run exactly same command on a multimodule project and integration tests are in submodules everything works fine. Also below commands work as expected as well: mvn clean install mvn clean install -f project_dir/pom.xml run it form IDE

I am using Spring Boot 2.0.0.M7, no xmls, just auto configs and annotations sorry if this is not the right place for this comment.

Comment From: endss

Hi guys, I had same problem with Jenkis in my company.

Followng comment in top , removing "." from command maven in the Jenkis, fixed the problem.

L am using Spring Boot 2.1.3.

Thanks for sharing.

Comment From: yasarkunduz

If you want to use mvn -f ./pom.xml, you should have a multi-module project (just add at least 1 module to your project), then it will work!

Comment From: snicoll

The check has been relaxed, see #29137, so it shouldn't fail hard anymore now.