【问题标题】:How to specify the file path in java which has variable in it's path?如何在java中指定路径中有变量的文件路径?
【发布时间】:2020-12-12 20:59:20
【问题描述】:

我有两个项目。一个在位置 a,另一个在 b。

项目 a 需要从项目 b 的目录加载 conf 文件。 我无法硬编码位于 b 目录中的文件的路径,因为如果我在不同的机器上运行它,每台机器的用户名都会不同,路径也可能不同。

所以我想做的是,每个人都将他们的conf文件路径设置为.bashrc中的环境变量。这样我想在我的java代码中使用导出的变量路径。现在的问题是我该怎么做?


以下是类似于我想做的事情:

我的系统中有一个变量存储在 .bashrc 中,如下所示:

export variableName1=~/path_to_file

现在我想在加载配置文件时在java中使用这个变量,如下所示:

        Config config = ConfigFactory.parseFile(new File("${variableName1}/path_to_file"));

我该怎么做?

我尝试按如下方式获取 variableName1 的值:

        String value =  System.getProperty("variableName1");
                          OR
        String value =  System.getenv("variableName1");

但这只会返回空值。

【问题讨论】:

  • 你的意思是 System.getProperty("") 吗?
  • 这都是关于可变用户名还是 home/ 部分不同?
  • 我不太明白你的问题是什么......它是根据当前用户加载环境变量还是创建变量路径?还是两者兼而有之?
  • 加载环境变量。因为每当我做 System.getenv("variableName1");或 System.getProperty("variableName1");我得到空值

标签: java ubuntu intellij-idea akka config


【解决方案1】:

这是一个environment variable,因此可以使用

String myDirectory = System.getenv("variableName1");

【讨论】:

  • 但是这个给了我空值:(
  • 您可以使用System.out.println(System.getenv()); 打印所有内容,如果它不在那里,那么您甚至还没有加载.bashrc 文件
  • 它不是 [打印我在 .bashrc 中设置的所有内容,但它似乎只打印特定值。知道它为什么会这样吗?
【解决方案2】:

第 1 步: 你需要export.bashrc文件中的变量名才能从所有终端访问。

export variableName1="~/path_to_file"

然后重启电脑。

第 2 步:

在 Java 代码中,您可以通过以下方式获取值:

 String value =  System.getenv("variableName1");

【讨论】:

  • 做到了。但它似乎只返回空值
  • 重启ide后再试,加双引号
  • 不,这行不通。我尝试了不同的方法。并决定使用我已经在项目中使用的另一个环境变量
猜你喜欢
  • 1970-01-01
  • 2018-09-29
  • 2015-06-04
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
相关资源
最近更新 更多