0

I am in the process of migrating an existing app from Spring-Data-Neo4j 3.x to 4.1 using neo4j-ogm 2.0.4. After overcoming some obstacles, it is now running fine when launched directly from IDE.

However it doesn't find any DomainEntities when I run it via a Spring Boot runnable jar:

(ClassPathScanner.java:132)    Classpath elements:
(ClassPathScanner.java:134)    D:\Programme\Project\myProject.jar
(DomainInfo.java:108)          Starting Post-processing phase
(DomainInfo.java:74)           Building annotation class map
(DomainInfo.java:87)           Building interface class map for 0 classes
(DomainInfo.java:136)          Checking for @Transient classes....
(DomainInfo.java:155)          Registering converters and deregistering transient fields and methods....
(DomainInfo.java:159)          Post-processing complete
(DomainInfo.java:69)           0 classes loaded in 40179 milliseconds

The executable jar is built using the Spring Boot Gradle Plugin which allows to make a jar executable:

springBoot {
  executable = true
}

I've attached to the app via remote debugging when the jar starts and found that org.neo4j.ogm.scanner.ClassPathScanner#scan only contains my jar as classPathElement. According to the code, this should now be scanned as a zip/jar file. When classPathElement.isFile() is executed however, this evaluates to false and the jar is skipped. Why is that the case? Is an executable jar not a file?

What steps can I take to get this running? I could probably use some other deployment mechanism, but I found this fairly simple and well working.

geld0r
  • 800
  • 10
  • 22

1 Answers1

0

I did some additional investigation and it turned out that this was not related to the runnable jar at all. This was actually caused by having a space in the path to the jar file.

I think that is a perfectly valid case and am not sure why this doesn't work. In my case it was ok though to simply rename the respective folder and remove the space.

geld0r
  • 800
  • 10
  • 22