具有 Spring 引导的 Neo4j-Ogm:当部署为可运行 jar 时,类路径扫描未找到 DomainEntities

Neo4j-Ogm with Spring Boot: Classpath scanning doesn't find DomainEntities when deployed as runnable jar

我正在使用 neo4j-ogm 2.0.4 将现有应用程序从 Spring-Data-Neo4j 3.x 迁移到 4.1。 克服一些障碍后,现在 运行 直接从 IDE 启动时没问题。

但是,当我通过 Spring 启动 运行nable 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 插件构建的,该插件允许制作 jar 可执行文件:

springBoot {
  executable = true
}

我在 jar 启动时通过远程调试连接到应用程序,发现 org.neo4j.ogm.scanner.ClassPathScanner#scan 只包含我的 jar 作为 classPathElement。根据代码,现在应该将其扫描为 zip/jar 文件。但是,当 classPathElement.isFile() 被执行时,它的计算结果为 false 并跳过 jar。 为什么会这样?可执行jar不是文件吗?

我可以采取哪些步骤来获得这个 运行ning?我或许可以使用其他一些部署机制,但我发现这相当简单且运行良好。

我做了一些额外的调查,结果发现这与可运行的 jar 根本无关。这实际上是由于在 jar 文件的路径中有一个 space。

我认为这是一个完全有效的案例,但我不确定为什么这不起作用。就我而言,可以简单地重命名相应的文件夹并删除 space.