Error creating EntityManagerFactory

I am developing a spring boot application. All entity classes are packed into a separate jar file(Entity.jar) with persistence.xml file. The jar layout looks like

MyApp.jar->BOOT-INF–>lib->-Entity.jar

                       Another.jar

I run my application with

java - jar target\eomsender-service-0.0.1.jar

I try to call createEntityManagerFactory from the code that resides in Another.jar and receive the following error:

java.io.FileNotFoundException: C:\DevData\eomsender-service\target\eomsender-service-0.0.1.jar!\BOOT-INF\lib\Entity.jar (The system cannot find the path spec
ified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(Unknown Source)
at java.util.zip.ZipFile.(Unknown Source)
at java.util.jar.JarFile.(Unknown Source)
at java.util.jar.JarFile.(Unknown Source)
at org.hibernate.boot.archive.internal.JarFileBasedArchiveDescriptor.resolveJarFileReference(JarFileBasedArchiveDescriptor.java:168)
at org.hibernate.boot.archive.internal.JarFileBasedArchiveDescriptor.visitArchive(JarFileBasedArchiveDescriptor.java:51)
at org.hibernate.boot.archive.scan.spi.AbstractScannerImpl.scan(AbstractScannerImpl.java:47)
at org.hibernate.boot.model.process.internal.ScanningCoordinator.coordinateScan(ScanningCoordinator.java:75)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.prepare(MetadataBuildingProcess.java:98)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:229)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:171)
at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:76)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:181)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:129)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)

As far as I understand ZipFile class does not handle unzipping hierarchical archives and that’s why I get this error. Is there any way to overcome this problem?

Thanks

In your pom.xml’s maven plugin, you’ll need to add a configuration to unpack the required jars:

 <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <requiresUnpack>
                    <dependency>
                        <groupId>org.keycloak</groupId>
                        <artifactId>keycloak-model-jpa</artifactId>
                    </dependency>
                </requiresUnpack>
            </configuration>
        </plugin>