Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
如何将批处理文件包含到Eclipse Java应用程序中?_Java_Eclipse_Batch File - Fatal编程技术网

如何将批处理文件包含到Eclipse Java应用程序中?

如何将批处理文件包含到Eclipse Java应用程序中?,java,eclipse,batch-file,Java,Eclipse,Batch File,我有一个Java应用程序,当我通过命令行运行它时,它工作得很好(我用记事本++编写了它)。然而,当我尝试将同一个Java应用程序移植到Eclipse中时,它对我不起作用。这是一个以批处理文件为特征的应用程序,该批处理文件用于重新启动中途中断的程序: 批处理文件: set CLASSPATH=./bin java fixedMessageApp.FixedMessageSequenceServer 4446 mylogfile.txt 0 0 ping 127.0.0.1 -n 2 >

我有一个Java应用程序,当我通过命令行运行它时,它工作得很好(我用记事本++编写了它)。然而,当我尝试将同一个Java应用程序移植到Eclipse中时,它对我不起作用。这是一个以批处理文件为特征的应用程序,该批处理文件用于重新启动中途中断的程序:

批处理文件:

set CLASSPATH=./bin 
java fixedMessageApp.FixedMessageSequenceServer 4446 mylogfile.txt 0 0 
ping 127.0.0.1 -n 2 > nul 
rem java fixedMessageApp.FixedMessageSequenceClient localhost 4444 myclientLog.txt 0
Java文件:

public class FixedMessageRunner {

    public static void main(String[] args) {
        if (args.length < 1) { 
            System.out.println("usage: java FixedMessageRunner CMD"  ); 
            System.exit(0);
        } 
        try {
            //for (;;) {            
                String current = new java.io.File( "." ).getCanonicalPath();
                System.out.println("Current dir:"+current);
                ProcessBuilder pb = new ProcessBuilder(args[0]); 
                pb.directory(new File(current));          //("C://FixedMessageApplication//"));
                Process p = pb.start();
                p.waitFor();
            //}
        } catch (IOException i) {
            i.printStackTrace();
        }
        catch (InterruptedException i) {
            i.printStackTrace();
        }
    }
}
公共类FixedMessageRunner{
公共静态void main(字符串[]args){
如果(args.length<1){
println(“用法:JavaFixedMessageRunnerCmd”);
系统出口(0);
} 
试一试{
//对于(;){
字符串current=new java.io.File(“.”).getCanonicalPath();
System.out.println(“当前目录:+当前”);
ProcessBuilder pb=新的ProcessBuilder(参数[0]);
pb.directory(新文件(当前));/(“C://FixedMessageApplication/”);
进程p=pb.start();
p、 waitFor();
//}
}捕获(IOI异常){
i、 printStackTrace();
}
捕获(中断异常i){
i、 printStackTrace();
}
}
}
为什么这在Eclipse中不起作用,就像在CMD中一样?在Eclipse中,当运行时,它将挂起:


当前目录值是否与预期值相同?您是否尝试过进行“调试”?可能是因为您正在调用p.waitFor();这可能会导致线程等待进程完成。我还会添加,尝试添加system.out.println(“Hello”);在p.waitfor()之后;并在命令行中运行。我的猜测是,命令行与eclipse有相同的问题,只是您没有发布它。您可以捕获进程的输出流并查看它。在某些情况下,将windows批处理文件作为可执行文件调用不起作用。“current dir”值是否如预期的那样?您是否尝试过进行“调试”?可能是因为您正在调用p.waitFor();这可能会导致线程等待进程完成。我还会添加,尝试添加system.out.println(“Hello”);在p.waitfor()之后;并在命令行中运行。我的猜测是,命令行与eclipse有相同的问题,只是您没有发布它。您可以捕获进程的输出流并查看它。在某些情况下,将windows批处理文件作为可执行文件调用不起作用。