【发布时间】:2025-12-03 22:40:01
【问题描述】:
在 java 应用程序中,我有我的属性文件,其中包含键/对值,例如
usa.national.bank=美国银行
等等
现在假设我将我的应用程序部署在一个 unix 盒子中,在那里我已经声明了如下变量: export US_NAT_BANK=美国银行
所以我的应用程序应该在这个 unix 盒子中运行,并且在运行时的某个时间点,它会读取这个值。
所以尝试像这样声明我的属性文件: usa.national.bank=$US_NAT_BANK
但它无法读取变量中定义的值,即“美国银行”,而是读取文字值,即“$US_NAT_BANK”
我做错了什么还是不能在属性文件中使用 unix 变量?
【问题讨论】:
-
不是本地的; Java 不是外壳。但是您当然可以直接使用
System.getenv("US_NAT_BANK"),或者编写自己的逻辑来搜索其中包含$的子字符串并自己进行。 -
谢谢艾略特。所以这些其他解决方案显然必须用java本身编写,总体而言,属性文件不能直接引用变量。我说的对吗?
-
没有“Unix 变量”这样的东西;您似乎在谈论 环境变量 (在 Windows 上也可用)。你用的是弹簧吗?它具有从环境中读取属性的内置支持。
-
不,我没有使用 Spring。我的实际情况是指文件路径。该文件保存在服务器上的某个位置,我的属性文件应该具有此值。文件路径可用作服务器上的变量,但我无法在我的属性文件中使用该变量。只有硬编码路径有效。顺便说一句,Kafka 消费者的属性是 ssl.truststore.location
标签: java variables unix properties