Я использую класс Java для выполнения Perl-скрипта в Linux-окне. Успешно создается .class
. Но когда я выполняю класс, он говорит exit code successful as sop
, но я не могу видеть вывод Perl или выполнение скрипта. Если я исполню Perl напрямую, он отлично работает ...Невозможно увидеть вывод Perl, выполняемый из класса Java
Это сценарий Perl:
#!/usr/local/bin/perl
print ("Enter the distance to be converted:\n");
$originaldist = <STDIN>;
chop ($originaldist);
$miles = $originaldist * 0.6214;
$kilometers = $originaldist * 1.609;
print ($originaldist, " kilometers = ", $miles, " miles\n");
И это мой класс Java для вызова скрипта:
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
class test {
public static void main(String[] args) throws IOException {
String[] aCmdArgs = { "perl", "-e"
, "pl newprg.pl" };
Runtime oRuntime = Runtime.getRuntime();
Process oProcess = null;
try {
oProcess = oRuntime.exec(aCmdArgs);
oProcess.waitFor();
} catch (Exception e) {
System.out.println("error executing " + aCmdArgs[0]);
}
/* dump output stream */
BufferedReader is = new BufferedReader
(new InputStreamReader(oProcess.getInputStream()));
String sLine;
while ((sLine = is.readLine()) != null) {
System.out.println(sLine);
}
System.out.flush();
/* print final result of process */
System.err.println("Exit status=" + oProcess.exitValue());
return;
}
}
Если вы будете с помощью OutputStream из Runtime, а не inputStream? –
спасибо Джо за то, что заглянул в него. U означает, что я должен использовать PrintWriter writer = new PrintWriter (новый OutputStreamWriter ( oProcess.getOutputStream())), я напишу вывод в текстовом файле. – user2254173