如何从java代码在unix终端中执行外部工具?
我尝试用java代码执行一个基本命令,即“java-version”。我的代码适用于shell命令,例如“ls”、“echo$PATH”等。 我的代码:如何从java代码在unix终端中执行外部工具?,java,shell,unix,command,Java,Shell,Unix,Command,我尝试用java代码执行一个基本命令,即“java-version”。我的代码适用于shell命令,例如“ls”、“echo$PATH”等。 我的代码: import java.io.*; public class cmd { public static void main(String[] args) { String command = "java -version"; Process proc = null; try {
import java.io.*;
public class cmd {
public static void main(String[] args) {
String command = "java -version";
Process proc = null;
try {
proc = Runtime.getRuntime().exec(command);
} catch (IOException e1) {
System.out.println( "IOException 1" );
}
BufferedInputStream buffer = new BufferedInputStream( proc.getInputStream() );
BufferedReader commandOutput= new BufferedReader( new InputStreamReader( buffer ) );
String line = null;
try {
while ( ( line = commandOutput.readLine() ) != null ) {
System.out.println( line );
}
commandOutput.close();
} catch ( IOException e) {
System.out.println( "IOException 2" );
}
}
}
代码运行时没有异常或错误,但没有输出
如果String command=“ls”,则可以处理代码,并且可以在控制台中看到输出。检查您拥有的流程对象。您可能会看到一条错误消息,告诉您需要指定java可执行文件的完整路径,才能使其正常工作。但是,如果原因有所不同,那么在输出所述流的内容时,您也应该看到这一点。检查您拥有的流程对象。您可能会看到一条错误消息,告诉您需要指定java可执行文件的完整路径,才能使其正常工作。但是,如果原因有所不同,那么在输出所述流的内容时也应该看到这一点。将命令的输出重定向到一个tempfile,如“ls>atter.txt”。这可能会解决问题将命令的输出重定向到类似“ls>atter.txt”的临时文件。这可能会解决问题指定工具的完整路径非常有用且有效。谢谢。无论如何,您至少应该得到错误流输出-如果除了错误路径之外还有任何其他错误,没有错误流,您就不会知道它是关于什么的……我做到了;)迟做总比不做强:)为工具指定完整路径是有用且有效的。谢谢。无论如何,您至少应该得到错误流输出-如果除了错误路径之外还有任何其他错误,没有错误流,您就不会知道它是关于什么的……我做到了;)迟到总比不迟到好:)