当前位置: 首页 > 知识库问答 >
问题:

在spring boot应用程序中使用嵌入式neo4j的相对路径

王嘉木
2023-03-14

我正在尝试使用嵌入式数据库设置示例spring-boot-neo4j应用程序。我按照此处和此处的建议添加了所需的依赖项和配置。而这适用于绝对路径

spring.data.neo4j.uri=file://var/tmp/graph.db

我似乎找不到指定相对路径的方法。我试过了file://graph.db和file://./graph.db和文件://~/图形。db但请获取此

Caused by: java.lang.IllegalArgumentException: URI has an authority component
    at java.io.File.<init>(File.java:423) ~[na:1.8.0_112]
    at org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver.createPermanentFileStore(EmbeddedDriver.java:211) ~[neo4j-ogm-embedded-driver-2.0.5.jar:na]
    at org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver.configure(EmbeddedDriver.java:102) ~[neo4j-ogm-embedded-driver-2.0.5.jar:na]

尝试删除file://并使用graph.db。/graph.db但获取URI不是绝对的

尝试file:./graph.db但获取URI不是分层的

我想使用相对于项目位置(或主文件夹)的路径,有人可以指出如何指定这样的路径。我使用的是neo4j-ogm 2.0.5、gradle 2.14、spring-boot 1.4.2和jdk 1.8。

谢谢

共有3个答案

颜杰
2023-03-14

您可以使用${user.dir}解析绝对路径。

uri=file:${user.dir}/target/mock_data/neo4j_${random.uuid}/graph.db
uri=file:${user.dir}/../neo4j_${random.uuid}/graph.db
凌清夷
2023-03-14

目前,正如Thomas正确提到的,您不能将相对路径用于嵌入式数据存储和OGM。

您可以:

  • 使用环境变量(正如Thomas提到的)。有关如何传入的各种选项,请参阅文档
  • 指定组织类型的Bean。neo4j。ogm。配置。配置,并通过调用类似路径的内容来设置URI。获取(“.”)。toAbsolutePath()。normalize()。toString()获取当前目录,然后附加所需的相对目录
洪逸清
2023-03-14

看看强大的跨平台解决方案

  @Value("${spring.data.neo4j.uri:default}")
  private String neoUri;

  @Bean
  public Configuration neoConfig() throws URISyntaxException, IOException {
    String path = neoUri;
    Configuration.Builder builder = new Configuration.Builder();
    if (!"default".equals(path)) {
      LOG.info("Configured database uri: " + path);
      path = path.replace('\\', '/');
      URI uri = new URI(path);
      if ("file".equals(uri.getScheme())) {
        File file = new File(uri.getSchemeSpecificPart());
        path = "file:///" + file.getCanonicalFile().getAbsolutePath().replace('\\', '/');
        LOG.info("Absolute database path: " + path);
      }
      builder.uri(path);
    }
    // TODO: process other neo4j properties
    return builder.build();
  }

限制:不能将反斜杠用作目录名的一部分;)

 类似资料:
  • 这描述了 _neo4j-embedded_,让你在Python应用中嵌入Neo4j数据库的一个Python库。 从参考文档和这个章节的安装介绍分开,你可以参考:第 9 章 在Python应用中使用Neo4j。 这个工程在GitHub上面的源代码地址: https://github.com/neo4j/python-embedded 19.1. 安装 注意:Neo4j 数据库(来自社区版)本身就被包

  • 我是kubernetes的新手,需要在openshift平台上使用k8s confimap将springboot应用程序的属性文件外部化。我已将属性文件保存在git repo中,作为“greeter.message=Spring Bootmyapplication.properties已在库伯内特斯上挂载为卷!”并使用“oc create confimap myconfig--from-file=

  • 我有一个很大的swing应用程序,我想把javafx嵌入其中。我多次尝试这样做(通过遵循oracle教程等),但只有在声明一个新的JFrame以使用JFXPanel组件时才成功。但是,我不想使用新的框架,我想将我的Javafx代码合并到swing应用程序的根JFrame中。 我们可以将javaFX组件嵌入到JPanel而不是JFrame中吗?如果答案是肯定的,为什么我没有成功?

  • 我正在尝试配置我的应用程序上下文,以便能够在我的应用程序中使用带有嵌入式图形的Neo4j服务器,但没有多大成功。我同时使用Spring数据(Mongo和Neo4j存储库方法)。这是我的应用程序上下文,未运行: 如果我不使用这种方法,只指定存储目录(注释行),那么一切都可以正常运行。我怀疑这是SDN和neo4j服务器之间的版本问题。这是我的POM: 它的父项作为依赖项Spring(核心、上下文、测试

  • 问题内容: 我想从Java Web应用程序读取文件。我不想提供文件的绝对路径。我只想将文件放在Web应用程序的某个目录中。 要么 可以将其与.war文件(打包的Web应用程序)一起放置。 给文件的相对路径。我试过了,但是没有用。 ======== 更新 ======== 我将向客户交付文件(打包的Web应用程序)。该Web应用程序将读取一个文件(让我们说),该文件将由客户端复制到服务器。因此,我需

  • 我需要使用Java运行嵌入高可用性模式的Neo4j。我下载了Neo4j的企业版,并对neo4j.properties文件进行了更改,如neo4j高可用性设置教程中所述。现在,如何使用这个修改过的neo4j.properties文件在高可用性模式下使用Java运行neo4j?