如何在Unix

时间:2019-01-25 06:42:54

标签: java unix cmd jar

我有两个名为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中设置系统变量并执行上述操作以生成字符串输出。

请让我知道是否需要其他信息。

1 个答案:

答案 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”驱动器)。