我有一个从命令行获取参数的jar文件,我想给包含环境变量的参数。类似下面:给环境变量作为参数
java -jar MyDev.jar -f %PROJECT_HOME%/src/test
但在上述情况下,程序会创建一个名为%PROJECT_HOME%
目录,但是我想,在系统PROJECT_HOME值/home/jack
路径。程序应遵循/home/jack/src/test
而不是%PROJECT_HOME%/src/test
的路径。
我该怎么做?
我有一个从命令行获取参数的jar文件,我想给包含环境变量的参数。类似下面:给环境变量作为参数
java -jar MyDev.jar -f %PROJECT_HOME%/src/test
但在上述情况下,程序会创建一个名为%PROJECT_HOME%
目录,但是我想,在系统PROJECT_HOME值/home/jack
路径。程序应遵循/home/jack/src/test
而不是%PROJECT_HOME%/src/test
的路径。
我该怎么做?
你在Unix shell中运行这个吗?如果是的话,我怀疑你只是想:
java -jar MyDev.jar -f ${PROJECT_HOME}/src/test
使用%
被指定环境变量的Windows操作方式 - 这似乎不适合用/home/jack
主目录...
我在Windows上运行,例如,我给了/ home/jack。 – emin 2012-01-05 10:02:47
@emin:首先明确说明这一点会很有帮助,然后使用更具代表性的示例......您是从命令提示符开始运行它,还是以其他方式启动它? – 2012-01-05 10:25:19
负责组件对于环境变量替换是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和命令行中输出实际路径变量。
一个很可能的原因可能是变量PROJECT_HOME
未定义或拼写错误的名称。因此,除非你已经这样做,否则在启动java程序之前应该执行echo %PROJECT_HOME%
以确保变量已定义。
Windows或Unix – RanRag 2012-01-05 10:03:17
它完全由shell来确定如何扩展命令行参数。 Java可以进一步解析它们,但是最好还是研究一下为什么你的DOS shell不像预期的那样工作。 – 2012-01-05 10:20:05
我试着把%USERPROFILE%传递给一个简单的一行测试类,它只打印System.out的输入参数。在我的情况下,变量被正确地翻译成我的家庭目录。您是否确保在启动java程序之前通过执行'echo%PROJECT_HOME%'来定义变量? – Alderath 2012-01-05 10:23:51