我正在使用neo4j-ogm 2.0.4将现有应用程序从Spring-Data-Neo4j 3.x迁移到4.1。 克服了一些障碍后,它直接从IDE启动时运行正常。
然而,当我通过Spring Boot可运行的jar运行它时,它找不到任何DomainEntities:
(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
可执行jar是使用Spring Boot Gradle Plugin构建的,它允许jar可执行:
springBoot {
executable = true
}
当jar启动时,我通过远程调试附加到应用程序,发现org.neo4j.ogm.scanner.ClassPathScanner#scan
仅包含我的jar classPathElement
。根据代码,现在应该将其扫描为zip / jar文件。但是,当执行classPathElement.isFile()
时,此计算结果为false并跳过jar。
为什么会这样?可执行jar不是文件吗?
我可以采取哪些步骤来实现此目的?我可能会使用其他一些部署机制,但我发现这相当简单且工作正常。
答案 0 :(得分:0)
我做了一些额外的调查,结果发现这根本与可运行的jar无关。这实际上是由于在jar文件的路径中有一个空格引起的。
我认为这是一个非常有效的案例,我不确定为什么这不起作用。在我的情况下,只需重命名相应的文件夹并删除空格即可。