我有两个名为test1.jar和test2.jar的jar文件。 为了在此jar文件中执行功能,我在cmd中的命令下面运行。 “ java getOutput参数1参数2参数3参数4”
先决条件是,我已经在系统环境变量中设置了以下条目,以使用上述命令执行java函数。
1.CLASSPATH = C:\ Folder \ test1.jar; C:\ Folder \ test2.jar; C:\ Program Files \ Java \ jre1.8.0_181 \ lib \ plugin.jar
2.JAVA_BIN = C:\ Program Files \ Java \ jre1.8.0_181 \ bin
3.JAVA_HOME = C:\ Program Files \ Java \ jre1.8.0_181
4.PATH = C:\ Program Files \ Java \ jre1.8.0_181 \ bin
上面命令的输出是一个字符串。
我还有另一个Java代码。我必须将上述字符串输出捕获到Java程序的变量中,并且可以通过在eclipse中使用以下Java代码来做到这一点。
String strArgs= strArg1+" "+strArg2+" "+strArg3+" "+strArg4;
Process p=Runtime.getRuntime().exec("cmd /c java getOutput "+strArgs+"");
BufferedReader input =new BufferedReader(new
InputStreamReader(p.getInputStream()));
String strOutput = input.readLine();
if (strOutput != null) {
System.out.println(strOutput);
String strVariable = strOutput;
input.close();
}else {
System.out.println("FAIL- Output not generated");
}
为了在UNIX上执行上述代码,我将第2行替换为“ Process p = Runtime.getRuntime()。exec(“ usr / bin / java getOutput” + strArgs +“”);“ ,将eclipse Java项目转换为名为Automation.jar的jar文件。我尝试使用以下命令在UNIX上执行此jar文件。 Java -cp automation.jar Package.MainClass。 当我运行代码时,我得到的输出为null。但是当我在Windows命令提示符下运行命令时,我得到了输出字符串。
请帮助我了解如何在Unix中设置系统变量并执行上述操作以生成字符串输出。
请让我知道是否需要其他信息。
答案 0 :(得分:1)
cmd
仅适用于Windows。 Unix使用外壳程序。但是您不需要在这里。只需删除cmd
通话即可。
Process p = Runtime.getRuntime().exec("java getOutput " + strArgs);
如果找不到Java,则可以从环境中读取JAVA_BIN
(或JAVA_HOME
)。
String java_bin = System.getenv("JAVA_BIN");
Process p = Runtime.getRuntime().exec(java_bin + "/java getOutput " + strArgs);
最后,您的环境变量看起来像Windows路径变量。确保它们对于您的Unix环境是正确的(Unix没有“ C”驱动器)。