import java.io.*;
public class chk
{
String command;
public String getMsg(String fileName,File Path1)
{
String dir,name=" ";
int x;
x=fileName.indexOf(".class");name=fileName.substring(0, x);
command ="java " + name +" < C:\\iptest\\input.txt > C:\\outtest\\"+name+".txt";
String output = executeCommand(command,Path1);
if(output.compareTo("")==0)
output = "Compilation Successfull!!";
return output;
}
private String executeCommand(String command,File Path1)
{
StringBuffer output = new StringBuffer();
Process p;
try
{
p = Runtime.getRuntime().exec(command,null,Path1);
//p.waitFor();
BufferedReader reader1 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
BufferedReader reader2 = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader1.readLine())!= null)
{
output.append(line + "\n");
}
while ((line = reader2.readLine())!= null)
{
output.append(line + "\n");
}
} catch (Exception e)
{
e.printStackTrace();
}
return output.toString();
}
public static void main(String args[])throws IOException
{
String x;
File dir=new File("C:\\Users\\RONEET\\Desktop");
chk ob=new chk();
x=ob.getMsg("hello.class",dir);
System.out.println("OUtput : "+x);
}
}
我在这个文件中所做的是从一个java文件中执行一个hello.class文件,并使用正确的文件名将其输出作为txt文件存储在以下位置< code>C:\outtest\。但是当我编译上面的文件时,我的程序进入了某种无限循环,永远不会终止。
编辑 : 您好.java
import java.io.*;
class hello
{
public static void main(String agrs[])throws IOException
{
BufferedReader s=new BufferedReader(new InputStreamReader(System.in));
String str;
str=s.readLine();
System.out.print(str+"\n");
}
}
流的读取可能是阻塞的。您可以尝试将流读取放入单独的线程中。
免责声明-我已经发现我的解决方案可以工作,除非我使用标准输入和标准输出重定向
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Runner {
public static void pipeStream(InputStream input, OutputStream output) throws IOException {
byte buffer[] = new byte[1024];
int numRead = 0;
do {
numRead = input.read(buffer);
output.write(buffer, 0, numRead);
} while (input.available() > 0);
output.flush();
}
public static void main(String[] argv) {
File dir = new File("C:\\Users\\Leo\\workspace\\STackOverflow\\src\\");
FileInputStream fileIn = null;
FileOutputStream fileOut = null;
OutputStream procIn = null;
InputStream procOut = null;
try {
fileIn = new FileInputStream(new File(dir, "input.txt"));
fileOut = new FileOutputStream(new File(dir, "output.txt"));
Process process = Runtime.getRuntime().exec("C:\\jdk1.7.0_51\\bin\\java Hello", null, dir);
procIn = process.getOutputStream();
procOut = process.getInputStream();
pipeStream(fileIn, procIn);
pipeStream(procOut, fileOut);
} catch (IOException ioe) {
System.out.println(ioe);
}
}
}
考虑到
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Hello {
/**
* @param args
*/
public static void main(String[] args) {
try{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String input;
while((input=br.readLine())!=null){
System.out.println("processed"+input);
}
}catch(IOException io){
io.printStackTrace();
}
}
}
这和
"java Hello < input.txt > output.txt"
给定输入.txt例如
1
2
3
4
它生成output.txt,就像
processed1
processed2
processed3
processed4
问题内容: 我想从bat文件执行Java类,它包括的用法。下面是代码: 运行它时出现以下错误。我认为“包含”存在任何问题,有人可以帮助我吗? 问题答案: 类似于classpath。 在Linux下: 在Windows下:
问题内容: 我有一个bash脚本文件,正在shell中使用source命令调用它,并且正在设置许多环境变量。然后,我可以使用环境变量正在设置的所有工具。 现在,我想使用以下方法在Java中执行相同的操作: 我知道源是内部命令,不能从Java调用它。 还有其他方法可以通过java在该文件中设置环境变量,以便以后可以在我的代码中使用它们来调用其他命令吗? 先感谢您! 问题答案: 尝试执行类似的操作,在
问题内容: 我正在尝试从用户读取一个文件,其中每一行都是一个命令,然后运行它(可以假定命令是合法的),但是当我给出类似的命令时,出现运行时异常错误: 线程“主”中的异常java.io.IOException:无法运行程序“ echo”:CreateProcess错误= 2,系统找不到指定的文件 我正在尝试运行以下命令: 在哪里。但这确实适用于类似的命令,所以看来我得到的运行时就像“运行”窗口而不是
问题内容: 我正在尝试从GNU / Linux平台上的Java应用程序执行shell命令。问题是,尽管它可以从bash成功运行,但调用另一个Java应用程序的脚本永远不会结束。我试图调试它: 我尝试使用:ProcessBuilder(); 和Runtime.getRuntime()。exec(cmd); 看起来它正在等待完成。有任何想法吗? 谢谢,Laurențiu 问题答案: 您是否正在处理标准
我正在使用以下代码执行一个SH文件Linux 此代码工作,但是我不能使用SH文件中的屏幕命令从Java执行时,我得到这个错误 必须连接到端子。 那么,可以将java“连接”到终端吗?当我通过SSH连接时,我想也能看到这个屏幕,所以我认为它必须连接到终端,当你通过SSH连接到服务器时,终端会显示出来。
我试图从maven命令行运行一个类,但得到以下错误。不知道我错过了什么。有谁能引导一下吗? pom.xml