具有 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.
我正在使用 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.