0

我有一个正在运行的外部程序。出于某种原因,代码所有者没有给我代码或良好的文档,我知道如何运行此代码,但它最初是为了从命令行而不是从 JAVA 执行而编写的。对我的影响是该应用程序使用 ENV 变量并根据其值(计算机上的输出路径)进行中继。我想更改该值,如何在不从批处理文件中运行它的情况下完成?

4

4 回答 4

1

我假设您正在使用 Java 代码中的Runtime .exec() 方法之一执行该程序以创建Process

请注意,其中一些方法允许您将环境变量传递给正在创建的进程,例如exec(String[] cmd, String[] envp)

或者,可以操作ProcessBuilder.environment()返回的 Map以获得相同的效果。

于 2012-06-07T12:36:09.203 回答
0

看到这个帖子。在发布问题之前先在这里开始搜索通常会有所帮助。如果您已经尝试过该解决方案,它确实有助于帮助者让他们知道您尝试过并且出了什么问题。

于 2012-06-07T12:32:38.493 回答
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 变量。

于 2012-06-07T12:13:20.947 回答
0

如何在不从批处理文件运行的情况下完成

只需设置全局环境变量。所有新进程都会看到它(不包括那些从旧父进程继承环境的进程)。

另请参阅如何从 Java 设置环境变量?. 这回答了问题的标题。顺便说一句,这与问题的主体不匹配。;)

于 2012-06-07T12:19:07.947 回答