我有一个从命令行获取参数的jar文件,我想提供包含环境变量的参数。如下所示:
java -jar MyDev.jar -f %PROJECT_HOME%/src/test
但是在上面的案例程序中创建了一个名为%PROJECT_HOME%
的目录,但我希望系统中的PROJECT_HOME值为/home/jack
路径。并且计划应遵循/home/jack/src/test
而不是%PROJECT_HOME%/src/test
路径。
我该怎么做?
答案 0 :(得分:4)
你是在Unix shell中运行吗?如果是这样,我怀疑你只是想:
java -jar MyDev.jar -f ${PROJECT_HOME}/src/test
使用%
是指定环境变量的Windows方式 - 它似乎不适合/home/jack
的主目录......
答案 1 :(得分:2)
负责环境变量替换的组件是shell /命令行处理器(Windows上为cmd.exe
)。
我写了以下main
方法:
public static void main(String[] args) {
System.out.println(args[0]);
}
当我传递“%PATH%”作为参数时,从Eclipse中运行它会打印出%PATH%
。从命令行运行它会打印出实际的路径环境变量。
请注意,您可以使用System.getenv()
从Java代码访问环境变量。
例如,System.out.println(System.getenv("PATH"))
打印出来自Eclipse和命令行的实际路径变量。
答案 2 :(得分:0)
一个非常可能的原因可能是变量PROJECT_HOME
未定义或具有拼写错误的名称。因此,除非您已经这样做,否则应该在启动java程序之前执行echo %PROJECT_HOME%
以确保定义变量。