我有一个我正在运行的外部程序。 由于某种原因,代码所有者没有给我代码或良好的文档,我知道如何运行此代码,但它原来是从命令行执行而不是从JAVA执行。 对我的影响是这个应用程序使用ENV变量并对其值(计算机上的输出路径)进行中继。 我想改变那个值,如果不从批处理文件中运行它怎么办呢?
答案 0 :(得分:1)
我假设您正在使用Java代码中的Runtime。exec()方法之一执行此程序以创建Process。
请注意,其中一些方法允许您将环境变量传递给您正在创建的流程,例如exec(String[] cmd, String[] envp)。
或者,可以操纵ProcessBuilder.environment()返回的地图以获得相同的效果。
答案 1 :(得分:0)
在命令提示符中首先设置所需的变量
set FILELOCATION=<PATH TO FILE>
java MyProgram
在这种情况下,FILELOCATION
将可用,直到你关闭程序。
不设置变量将取决于操作系统。
对于Linux或Solaris,您可以这样做:
export FILELOCATION=<PATH TO FILE>
如果您正在寻找命令行参数,那么您可以使用以下内容:
java MyProgram PathToFile
有一种更好的方法java -DFILELOCATION=<PATH_TO_FILE> MyProgram
编辑:根据评论。
只需使用ProcessBuilder在Java代码中设置ENV变量即可。
答案 2 :(得分:0)
如果不从批处理文件中运行它怎么办
只需设置全局环境变量即可。所有新进程都将看到它(不包括从旧父进程继承环境的那些进程)。
另见How do I set environment variables from Java?。 这回答了问题的标题。哪个与问题的身体不符,顺便说一下。 ;)
答案 3 :(得分:0)
见this post。在发布问题之前,首先在此处开始搜索通常会有所帮助。如果你已经尝试过这个解决方案,它真的可以帮助帮助者让他们知道你已经尝试过它以及出了什么问题。