首页 > 解决方案 > 我无法将我的 SpringbootApplication 与 Neo4j 连接

问题描述

我正在尝试使用 Neo4j 运行我的 Spring Boot Web 应用程序。我正在使用它,但似乎无法正常工作。我总是收到一个以“java.lang.IllegalStateException: Failed to execute CommandLineRunner”开头的错误

我正在使用 Springboot 版本 2.2.2

这是我的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>accessing-data-neo4j</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>accessing-data-neo4j</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-neo4j</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

这是我的 SpringApplicationClass:


@SpringBootApplication
@EnableNeo4jRepositories
public class AccessingDataNeo4jApplication {

  private final static Logger log = LoggerFactory.getLogger(AccessingDataNeo4jApplication.class);

  public static void main(String[] args) throws Exception {
    SpringApplication.run(AccessingDataNeo4jApplication.class, args);
  }

  @Bean
  CommandLineRunner demo(PersonRepository personRepository, PlaceRepository placeRepository) {
    return args -> {

      // ===========================================================================================
      // == places
      // ===========================================================================================

      personRepository.deleteAll();
      placeRepository.deleteAll();

      Place goldbekmarkt = new Place("Goldbekmarkt");
      Place museum = new Place("Museum");
      Place stadtpark = new Place("Stadtpark");
      Place hagenbecksTierpark = new Place("HagenbecksTierpark");
      Place stMichaelis = new Place("St.Michaelis");

      List<Place> places = Arrays
          .asList(goldbekmarkt, museum, stadtpark, hagenbecksTierpark, stMichaelis);
      placeRepository.saveAll(places);

      // ===========================================================================================
      // == persons
      // ===========================================================================================

      Person orhan = new Person("Orhan");
      Person yusuf = new Person("Yusuf");
      Person steph = new Person("Steph");
      Person lebron = new Person("Lebron");
      Person kevin = new Person("Kevin");
      Person kim = new Person("Kim");
      Person tobias = new Person("Tobias");
      Person robin = new Person("Robin");
      Person niels = new Person("Niels");
      Person daniel = new Person("Daniel");
      Person michael = new Person("Michael");
      Person elia = new Person("Elia");

      List<Person> persons = Arrays
          .asList(orhan, yusuf, steph, lebron, kevin, kim, tobias, robin, niels, daniel, michael,
              elia);
      personRepository.saveAll(persons);

      // ===========================================================================================
      // == connect places with persons
      // ===========================================================================================

      //List<WasInPlace> wasInPlaces = new ArrayList();
      //wasInPlaces.add(new WasInPlace(new Date(), 20, orhan, winterhude));

      goldbekmarkt.addPlace(new WasInPlace(new Date(), 20, orhan, goldbekmarkt));
      goldbekmarkt.addPlace(new WasInPlace(new Date(), 20, robin, goldbekmarkt));
      hagenbecksTierpark.addPlace(new WasInPlace(new Date(), 20, steph, hagenbecksTierpark));
      hagenbecksTierpark.addPlace(new WasInPlace(new Date(), 20, lebron, hagenbecksTierpark));
      museum.addPlace(new WasInPlace(new Date(), 20, kevin, museum));
      museum.addPlace(new WasInPlace(new Date(), 20, yusuf, museum));
      museum.addPlace(new WasInPlace(new Date(), 20, tobias, museum));
      goldbekmarkt.addPlace(new WasInPlace(new Date(), 20, tobias, goldbekmarkt));
      stadtpark.addPlace(new WasInPlace(new Date(), 20, kim, stadtpark));
      stMichaelis.addPlace(new WasInPlace(new Date(), 20, niels, stMichaelis));
      stMichaelis.addPlace(new WasInPlace(new Date(), 20, daniel, stMichaelis));
      stMichaelis.addPlace(new WasInPlace(new Date(), 20, michael, stMichaelis));
      stMichaelis.addPlace(new WasInPlace(new Date(), 20, elia, stMichaelis));
      stadtpark.addPlace(new WasInPlace(new Date(), 20, yusuf, stadtpark));

      placeRepository.saveAll(places);

      // ===========================================================================================
      // == connect person with person
      // ===========================================================================================

      orhan.addContact(yusuf, new Date(), 10);
      orhan.addContact(steph, new Date(), 10);
      orhan.addContact(lebron, new Date(), 10);
      yusuf.addContact(kevin, new Date(), 20);
      yusuf.addContact(kim, new Date(), 20);
      steph.addContact(kim, new Date(), 10);

      personRepository.saveAll(persons);

      // ===========================================================================================
      // == tests
      // ===========================================================================================

      System.out.println();
      System.out.println("=======================================================================");
      System.out.println("== TEST");
      System.out.println("=======================================================================");
      System.out.print(yusuf.getName() + ": ");
      System.out
          .println(yusuf.contacts.stream().map(o ->
              o.getEnd().getName()).collect(joining(",")));
    };
  }

}

这是我的节点:

@NodeEntity
public class Person {

  @Id
  @GeneratedValue
  private Long id;

  private String name;

  @Relationship(type = "befand_sich_an_ort")
  private Set<Place> places;

  @Relationship(type = HadContactWith.TYPE, direction = Relationship.UNDIRECTED)
  public Set<HadContactWith> contacts = new HashSet<>();

  public Person(String name) {
    this.name = name;
  }

  public void addContact(Person target, Date date, int count) {
    this.contacts.add(new HadContactWith(this, target, date, count));
  }

  public Set<Place> getPlaces() {
    return places;
  }

  public void setPlaces(Set<Place> places) {
    this.places = places;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Set<HadContactWith> getContacts() {
    return contacts;
  }

  public void setContacts(Set<HadContactWith> contacts) {
    this.contacts = contacts;
  }

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }
}



这是我的错误:


Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-06-04 13:27:32.912 ERROR 6188 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Failed to execute CommandLineRunner
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:787) [spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:768) [spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) [spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE]
    at com.example.accessingdataneo4j.AccessingDataNeo4jApplication.main(AccessingDataNeo4jApplication.java:26) [main/:na]
Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open Neo4j Session for transaction; nested exception is org.neo4j.ogm.exception.ConnectionException: Could not create driver instance
    at org.springframework.data.neo4j.transaction.Neo4jTransactionManager.doBegin(Neo4jTransactionManager.java:204) ~[spring-data-neo4j-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:376) ~[spring-tx-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:572) ~[spring-tx-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:360) ~[spring-tx-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99) ~[spring-tx-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.2.3.RELEASE.jar:5.2.3.RELEASE]
    at com.sun.proxy.$Proxy83.deleteAll(Unknown Source) ~[na:na]
    at com.example.accessingdataneo4j.AccessingDataNeo4jApplication.lambda$demo$1(AccessingDataNeo4jApplication.java:37) [main/:na]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:784) [spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE]
    ... 5 common frames omitted
Caused by: org.neo4j.ogm.exception.ConnectionException: Could not create driver instance
    at org.neo4j.ogm.drivers.bolt.driver.BoltDriver.initializeDriver(BoltDriver.java:168) ~[neo4j-ogm-bolt-driver-3.2.6.jar:3.2.6]
    at org.neo4j.ogm.drivers.bolt.driver.BoltDriver.checkDriverInitialized(BoltDriver.java:146) ~[neo4j-ogm-bolt-driver-3.2.6.jar:3.2.6]
    at org.neo4j.ogm.drivers.bolt.driver.BoltDriver.lambda$null$0(BoltDriver.java:132) ~[neo4j-ogm-bolt-driver-3.2.6.jar:3.2.6]
    at org.neo4j.ogm.session.transaction.DefaultTransactionManager.openTransaction(DefaultTransactionManager.java:75) ~[neo4j-ogm-core-3.2.6.jar:3.2.6]
    at org.neo4j.ogm.session.Neo4jSession.beginTransaction(Neo4jSession.java:541) ~[neo4j-ogm-core-3.2.6.jar:3.2.6]
    at org.springframework.data.neo4j.transaction.Neo4jTransactionManager.doBegin(Neo4jTransactionManager.java:182) ~[spring-data-neo4j-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    ... 18 common frames omitted
Caused by: org.neo4j.driver.exceptions.ServiceUnavailableException: Unable to connect to localhost:7687, ensure the database is running and that there is a working network connection to it.
    at org.neo4j.driver.internal.util.Futures.blockingGet(Futures.java:143) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.util.Futures.blockingGet(Futures.java:113) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.InternalDriver.verifyConnectivity(InternalDriver.java:159) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.ogm.drivers.bolt.driver.BoltDriver.initializeDriver(BoltDriver.java:165) ~[neo4j-ogm-bolt-driver-3.2.6.jar:3.2.6]
    ... 23 common frames omitted
    Suppressed: org.neo4j.driver.internal.util.ErrorUtil$InternalExceptionCause: null
        at org.neo4j.driver.internal.async.connection.ChannelConnectedListener.databaseUnavailableError(ChannelConnectedListener.java:76) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.async.connection.ChannelConnectedListener.operationComplete(ChannelConnectedListener.java:70) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.async.connection.ChannelConnectedListener.operationComplete(ChannelConnectedListener.java:37) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:570) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:549) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:608) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:688) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1044) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0-262]
Caused by: org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: localhost/127.0.0.1:7687
Caused by: java.net.ConnectException: Connection refused: no further information
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0-262]
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:714) ~[na:1.8.0-262]
    at org.neo4j.driver.internal.shaded.io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:327) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:688) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1044) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[neo4j-java-driver-4.0.0.jar:4.0.0-d03d93ede8ad65657eeb90ed890757203ecfaa7a]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0-262]

2021-06-04 13:27:32.918  INFO 6188 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

有谁知道它为什么不运行?

标签: javaspringspring-bootgradleneo4j

解决方案


推荐阅读