0

我正在使用 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 插件构建的,它允许使 jar 可执行:

springBoot {
  executable = true
}

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

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

4

1 回答 1

0

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

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

于 2016-08-21T16:29:06.877 回答