【问题标题】:What is wrong with my neo4j test setup? EmbeddedNeo4j.java, neo4j, maven我的 neo4j 测试设置有什么问题?嵌入式Neo4j.java、neo4j、maven
【发布时间】:2013-04-05 11:57:31
【问题描述】:

我使用“快速入门”原型使用 maven 开始了一个项目。然后我更改了我的 POM 以包含 neo4j:

https://github.com/ENCE688R/msrcs/blob/master/pom.xml

我补充说:

https://github.com/neo4j/neo4j/blob/master/community/embedded-examples/src/main/java/org/neo4j/examples/EmbeddedNeo4j.java

跑了

mvn package

这没有错误,但是

java -cp target/msrcs-1.0-SNAPSHOT.jar org.neo4j.examples.EmbeddedNeo4j

返回错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/neo4j/graphdb/RelationshipType

我错过了什么?此时我只需要测试我是否可以包含和使用 neo4j。

【问题讨论】:

    标签: maven neo4j


    【解决方案1】:

    使用

    mvn exec:java -Dexec.mainClass=org.neo4j.examples.EmbeddedNeo4j
    

    还有mvn dependency:copy将所有依赖复制到target/dependencies

    还有 mvn appassembler 插件,它允许您生成启动 shell 脚本,其中包含所有依赖项作为类路径。

    最后但并非最不重要的是,maven 程序集插件mvn assembly:single 会生成一个可以运行的单个 jar 文件java -jar my-jar-file.jar

    【讨论】:

      【解决方案2】:

      您还需要将 Neo4j 依赖项添加到您的类路径中。目前您只添加您创建的源 jar。如果您查看此POM,您会发现 Neo4J 示例需要许多其他依赖项。

      找到已下载依赖项的 libs 目录(这可能在您本地的 .m2 maven 存储库中)并将这些 jars 添加到您的类路径中。您不需要逐个添加每个 jar,因为您可以简单地添加带有通配符的目录 - 例如:

      窗户:

      java -cp "target/msrcs-1.0-SNAPSHOT.jar;lib/*" org.neo4j.examples.EmbeddedNeo4j
      

      Mac/Unix:

      java -cp "target/msrcs-1.0-SNAPSHOT.jar:lib/*" org.neo4j.examples.EmbeddedNeo4j
      

      【讨论】:

      • java -cp target/msrcs-1.0-SNAPSHOT.jar:~/.m2/repository/org/neo4j/* org.neo4j.examples.EmbeddedNeo4j 仍然给出同样的错误。 (我确实检查了该目录是否存在。)
      • 不幸的是,这并不容易。类路径条目只能包含一个 jar 或一个 jar 目录。您添加的路径是目录目录(包含 jars)。 Java 不会递归地爬取目录树并拾取所有 jar。您需要创建一个包含所有依赖项 jar 的目录。或者,您可以使用 maven-assembly-plugin 之类的东西为您收集所有依赖项并创建一个可运行的 jar。
      • 请问您的最终目标是什么?如果只是为了运行这个应用程序 - 诸如 Eclipse 之类的 IDE 将为您很好地包装它并处理设置依赖管理的类路径。或者,您可以使用 Maven exec 插件让 Maven 为您处理类路径条目。 Here is a nice tutorial.
      • 好吧,现在我尝试使用 ~/.m2/repository/org/neo4j/ 的每个子目录运行它,但仍然没有运气。最终我需要用neo4j提供的嵌入式数据库编写一个java应用程序。我认为 maven 的目的之一是处理依赖关系。我缺乏对 maven 或 java 依赖项的理解。大概两者兼而有之。无论如何,IDE 不是一种选择。我将不得不在命令行中弄清楚。
      • 我多么怀念不得不使用 Maven 的日子。好的 - 我只记得你可以使用 Maven 依赖插件将依赖库输出到单个目录 - quick search for an example gives me..
      【解决方案3】:

      我已经开始研究一些 maven 原型,这也可能是一个很好的起点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-26
        • 1970-01-01
        • 1970-01-01
        • 2018-09-13
        • 1970-01-01
        相关资源
        最近更新 更多