Neo4j-Ogm с Spring Boot: сканирование Classpath не находит DomainEntities при развертывании в виде исполняемого jar

Я нахожусь в процессе переноса существующего приложения с Spring-Data-Neo4j 3.x на 4.1 с использованием neo4j-ogm 2.0.4. После преодоления некоторых препятствий теперь он работает нормально при запуске непосредственно из IDE.

Однако он не находит никаких DomainEntities, когда я запускаю его через исполняемую банку Spring Boot:

(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 не файлом?

Какие шаги я могу предпринять, чтобы запустить это? Я мог бы, вероятно, использовать какой-то другой механизм развертывания, но я нашел это довольно простым и хорошо работающим.




Ответы (1)


Я провел дополнительное расследование, и оказалось, что это вообще не связано с исполняемой банкой. На самом деле это было вызвано наличием пробела в пути к файлу jar.

Я думаю, что это совершенно правильный случай, и я не уверен, почему это не работает. В моем случае было нормально просто переименовать соответствующую папку и удалить пробел.

person geld0r    schedule 21.08.2016