Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个java文件执行java命令 publicstringrunmsg(字符串文件名、文件路径、int选项) { int x=0; 字符串名称=”,ret=”; 如果(选项==1){ x=文件名.indexOf(“.c”); name=fileName.substring(0,x); command=name+.exeC:\\outtest\\\“+name+.txt”; }否则如果(选项==2){ x=文件名.indexOf(“.cpp”); name=fileName.substring(0,x); command=name+.exeC:\\outtest\\\“+name+.txt”; }否则{ x=fileName.indexOf(“.java”); name=fileName.substring(0,x); command=“java”+name+”C:\\outtest\\“+name+”.txt”; } 字符串输出=executeCommand(命令,路径); } 私有字符串executeCommand(字符串命令,文件路径) { StringBuffer输出=新的StringBuffer(); 过程p; 试一试{ p=Runtime.getRuntime().exec(命令,null,路径); p、 waitFor(); BufferedReader reader1=新的BufferedReader(新的InputStreamReader(p.getErrorStream()); BufferedReader reader2=新的BufferedReader(新的InputStreamReader(p.getInputStream()); //BufferedReader reader3=新的BufferedReader(新的InputStreamReader(p.getOutputStream()); 字符串行=”; 而((line=reader1.readLine())!=null){ 输出。追加(行+“\n”); } 而((line=reader2.readLine())!=null){ 输出。追加(行+“\n”); } }捕获(例外e){ e、 printStackTrace(); } 返回output.toString(); }_Java_Swing_Command Line - Fatal编程技术网

从另一个java文件执行java命令 publicstringrunmsg(字符串文件名、文件路径、int选项) { int x=0; 字符串名称=”,ret=”; 如果(选项==1){ x=文件名.indexOf(“.c”); name=fileName.substring(0,x); command=name+.exeC:\\outtest\\\“+name+.txt”; }否则如果(选项==2){ x=文件名.indexOf(“.cpp”); name=fileName.substring(0,x); command=name+.exeC:\\outtest\\\“+name+.txt”; }否则{ x=fileName.indexOf(“.java”); name=fileName.substring(0,x); command=“java”+name+”C:\\outtest\\“+name+”.txt”; } 字符串输出=executeCommand(命令,路径); } 私有字符串executeCommand(字符串命令,文件路径) { StringBuffer输出=新的StringBuffer(); 过程p; 试一试{ p=Runtime.getRuntime().exec(命令,null,路径); p、 waitFor(); BufferedReader reader1=新的BufferedReader(新的InputStreamReader(p.getErrorStream()); BufferedReader reader2=新的BufferedReader(新的InputStreamReader(p.getInputStream()); //BufferedReader reader3=新的BufferedReader(新的InputStreamReader(p.getOutputStream()); 字符串行=”; 而((line=reader1.readLine())!=null){ 输出。追加(行+“\n”); } 而((line=reader2.readLine())!=null){ 输出。追加(行+“\n”); } }捕获(例外e){ e、 printStackTrace(); } 返回output.toString(); }

从另一个java文件执行java命令 publicstringrunmsg(字符串文件名、文件路径、int选项) { int x=0; 字符串名称=”,ret=”; 如果(选项==1){ x=文件名.indexOf(“.c”); name=fileName.substring(0,x); command=name+.exeC:\\outtest\\\“+name+.txt”; }否则如果(选项==2){ x=文件名.indexOf(“.cpp”); name=fileName.substring(0,x); command=name+.exeC:\\outtest\\\“+name+.txt”; }否则{ x=fileName.indexOf(“.java”); name=fileName.substring(0,x); command=“java”+name+”C:\\outtest\\“+name+”.txt”; } 字符串输出=executeCommand(命令,路径); } 私有字符串executeCommand(字符串命令,文件路径) { StringBuffer输出=新的StringBuffer(); 过程p; 试一试{ p=Runtime.getRuntime().exec(命令,null,路径); p、 waitFor(); BufferedReader reader1=新的BufferedReader(新的InputStreamReader(p.getErrorStream()); BufferedReader reader2=新的BufferedReader(新的InputStreamReader(p.getInputStream()); //BufferedReader reader3=新的BufferedReader(新的InputStreamReader(p.getOutputStream()); 字符串行=”; 而((line=reader1.readLine())!=null){ 输出。追加(行+“\n”); } 而((line=reader2.readLine())!=null){ 输出。追加(行+“\n”); } }捕获(例外e){ e、 printStackTrace(); } 返回output.toString(); },java,swing,command-line,Java,Swing,Command Line,我试图从另一个java文件执行.class文件。.java文件将从位于C:\iptest\input.txt的txt文件中获取输入,并将在以下位置生成一个输出文件C:\outputtest\out.txt,但当我运行此应用程序时,什么都不会发生,应用程序将进入某种无限循环。您尝试过调试吗?还要对输出调用flush()。您也可以尝试ProcessBuilder,也许它更容易一点。顺便说一句,您不执行java文件。您需要一个java OtherClass(不带.class扩展)。@Marc Andr

我试图从另一个java文件执行
.class
文件。
.java
文件将从位于
C:\iptest\input.txt
的txt文件中获取输入,并将在以下位置生成一个输出文件
C:\outputtest\out.txt
,但当我运行此应用程序时,什么都不会发生,应用程序将进入某种无限循环。

您尝试过调试吗?还要对输出调用flush()。您也可以尝试ProcessBuilder,也许它更容易一点。顺便说一句,您不执行java文件。您需要一个
java OtherClass
(不带
.class
扩展)。@Marc Andre您提供的链接是我自己的问题-\ux您必须在子进程运行时处理输出。您不能调用
p.waitFor()当没有线程来处理进程的输入/输出时。@Marc Andre second code不是一个类,它是一个函数,我使用了相同的函数来编译我的.java文件,该文件运行良好并生成了.class文件。所以我不认为第二个函数有任何问题problem@rick对不起,我对所有的.class和.java都迷路了。Holger是对的,p.waitFor()是阻塞的,若你们不处理线程中的所有内容,你们就不会有任何输出/输入。
public String runMsg(String fileName, File Path, int option) 
{
    int x = 0;
    String name = " ", ret = "";

    if (option == 1) {
        x = fileName.indexOf(".c");
        name = fileName.substring(0, x);
        command = name + ".exe < C:\\iptest\\input.txt > C:\\outtest\\" + name + ".txt";
    } else if (option == 2) {
        x = fileName.indexOf(".cpp");
        name = fileName.substring(0, x);
        command = name + ".exe < C:\\iptest\\input.txt > C:\\outtest\\" + name + ".txt";
    } else {
        x = fileName.indexOf(".java");
        name = fileName.substring(0, x);
        command = "java " + name + " < C:\\iptest\\input.txt > C:\\outtest\\" + name + ".txt";
    }

    String output = executeCommand(command, Path);
}

private String executeCommand(String command, File Path)
{
    StringBuffer output = new StringBuffer();
    Process p;

    try {
        p = Runtime.getRuntime().exec(command, null, Path);
        p.waitFor();

        BufferedReader reader1 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        BufferedReader reader2 = new BufferedReader(new InputStreamReader(p.getInputStream()));
        // BufferedReader reader3 = new BufferedReader(new InputStreamReader(p.getOutputStream()));

        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();
}