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 は、jar を実行可能にすることができる Spring Boot Gradle プラグインを使用して構築されます。

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 に答える