私はSpring Data Neo4jを使用するSpring Bootプロジェクトを持っています。 IDE(Intellij)からプロジェクトを実行すると、すべて正常に動作します。コマンドラインからプロジェクトを実行すると(java -jar ...)、エンティティが永続クラスのインスタンスではないというメッセージが表示されます。SpringデータNeo4j ClassFileProcessorはクラスをロードしません
@Bean
public SessionFactory getSessionFactory() {
return new SessionFactory(getConfiguration(), basePackages);
}
そして、私は、メインクラスを注釈を付けています:
私はSessionFactoryのにbasePackagesを渡す
のIntelliJから起動する場合:
@EnableNeo4jRepositories(basePackages = "org.sgh.persistence")
情報ログには、次を示し:
2016-07-20 15:58:30.435 INFO 67581 --- [ main] o.s.d.neo4j.config.Neo4jConfiguration : Initialising Neo4jSession
2016-07-20 15:58:30.443 DEBUG 67581 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Classpath elements:
2016-07-20 15:58:30.443 DEBUG 67581 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : /Users/sebastianglahn/workspace/sandbox/spring-data-neo4j-example/build/classes/main/org/sgh/persistence
2016-07-20 15:58:30.447 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Processing: org.sgh.persistence.ExampleRepository -> java.lang.Object
2016-07-20 15:58:30.449 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Processing: org.sgh.persistence.TreeEntity -> java.lang.Object
2016-07-20 15:58:30.450 INFO 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Starting Post-processing phase
2016-07-20 15:58:30.450 INFO 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Building annotation class map
2016-07-20 15:58:30.450 INFO 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Building interface class map for 3 classes
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : - ExampleRepository implements 1 interfaces
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : - org.springframework.data.neo4j.repository.GraphRepository
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : - TreeEntity implements 0 interfaces
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : - Object implements 0 interfaces
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Post-processing: org.sgh.persistence.ExampleRepository
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : - No ClassInfo found for interface class: org.springframework.data.neo4j.repository.GraphRepository
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Post-processing: org.sgh.persistence.TreeEntity
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Checking for @Transient classes....
2016-07-20 15:58:30.450 DEBUG 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Registering converters and deregistering transient fields and methods....
2016-07-20 15:58:30.451 INFO 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Post-processing complete
2016-07-20 15:58:30.452 INFO 67581 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : 3 classes loaded in 11 milliseconds
コマンドラインから起動
:私は、問題を再現するためのGithub上の最小限のデモプロジェクトを作成している
2016-07-21 09:35:40.099 DEBUG 68083 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Scanning zipFile /private/tmp/spring-data-neo4j-demo/build/libs/spring-data-neo4j-example-0.0.1-SNAPSHOT.jar
2016-07-21 09:35:40.101 DEBUG 68083 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Scanning class entry: BOOT-INF/classes/org/sgh/configuration/Neo4jConfig.class
2016-07-21 09:35:40.101 DEBUG 68083 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Scanning class entry: BOOT-INF/classes/org/sgh/Controller/ExampleController.class
2016-07-21 09:35:40.101 DEBUG 68083 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Scanning class entry: BOOT-INF/classes/org/sgh/persistence/ExampleRepository.class
2016-07-21 09:35:40.101 DEBUG 68083 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Scanning class entry: BOOT-INF/classes/org/sgh/persistence/TreeEntity.class
2016-07-21 09:35:40.101 DEBUG 68083 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Scanning class entry: BOOT-INF/classes/org/sgh/service/ExampleService.class
2016-07-21 09:35:40.101 DEBUG 68083 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Scanning class entry: BOOT-INF/classes/org/sgh/SpringDataNeo4jExampleApplication.class
2016-07-21 09:35:40.101 DEBUG 68083 --- [ main] org.neo4j.ogm.scanner.ClassPathScanner : Scanning zipped entry: BOOT-INF/lib/spring-test-4.3.1.RELEASE.jar
:デバッグログが、
2016-07-21 09:11:46.441 INFO 67991 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Starting Post-processing phase
2016-07-21 09:11:46.441 INFO 67991 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Building annotation class map
2016-07-21 09:11:46.441 INFO 67991 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Building interface class map for 0 classes
2016-07-21 09:11:46.441 DEBUG 67991 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Checking for @Transient classes....
2016-07-21 09:11:46.441 DEBUG 67991 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Registering converters and deregistering transient fields and methods....
2016-07-21 09:11:46.441 INFO 67991 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : Post-processing complete
2016-07-21 09:11:46.441 INFO 67991 --- [ main] o.neo4j.ogm.metadata.ClassFileProcessor : 0 classes loaded in 1829 milliseconds
はClassPathScannerが正しいクラスをスキャンしていることを示しています。 https://github.com/sglahn/spring-data-neo4j-demo
次の操作を行い、問題を再現する: jarファイルをビルドします。
./gradlew build
jarファイルを実行します。
java -Dspring.config.location=build/resources/main/ -jar build/libs/spring-data-neo4j-example-0.0.1-SNAPSHOT.jar
アクセスブラウザでコントローラ:
http://localhost:8765/
をログが示しています
org.sgh.persistence.TreeEntity is not an instance of a persistable class
春ブートバージョンは1.4.0です。 RC1
私はSpring Boot 1.3.5とneo4j-ogm 2.0.4を使用していますが、同じ問題に直面しています。どのようにこれを解決できるのか説明できますか? "basePackages"設定を調整する必要がありますか? – geld0r