Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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_Signals_Autohotkey_Py4j - Fatal编程技术网

从Java到命令行的任务完成信号

从Java到命令行的任务完成信号,java,signals,autohotkey,py4j,Java,Signals,Autohotkey,Py4j,我正在从事一个使用Java的项目,但有一个使用Py4J实现的Python包装器。为了使其正常工作,我需要首先使用正确的命令行参数运行Java服务器(称之为Main.Java),一旦服务器初始化,我需要在其上运行我自己的Python脚本(称之为script.py) Main.java是我想要发出初始化完成信号的地方: public class Main { ... public void initialize() { // Server initializati

我正在从事一个使用Java的项目,但有一个使用Py4J实现的Python包装器。为了使其正常工作,我需要首先使用正确的命令行参数运行Java服务器(称之为
Main.Java
),一旦服务器初始化,我需要在其上运行我自己的Python脚本(称之为
script.py

Main.java
是我想要发出初始化完成信号的地方:

public class Main {

    ...

    public void initialize() {
        // Server initialization code
        signalInitializationDone();
    }
}
目前,我只使用以下AHK脚本
Run.AHK

Run, javaw Main --py4j
Sleep, 2000
Run, python .\python\Script.py
但这当然只在初始化在2秒内完成时有效,如果初始化更快完成,它也会不必要地空转。我希望有一个解决方案,在
Main.initialize()完成后立即运行
Script.py

我不能做的一件事是:

public void initialize() {
    // Server initialization code
    Runtime.getRuntime().exec("python .\python\Script.py");
}
或者从Java应用程序内部对python脚本进行类似的直接调用,因为同一服务器也可以与其他脚本一起运行,甚至可以作为独立脚本运行


我也不是一成不变地使用AHK,任何工作解决方案(AHK、Batch、Python、Java)都可以。

您可以使用表示要运行的脚本或无脚本的字符串参数化Java应用程序的初始化,并仍然从Java调用它。然后通过注入参数将其封装在py4j脚本中。是否尝试运行等待?或者,您可以捕获OutputVarPID和查询进程(大约每四分之一秒),以查看它何时显示。最后,服务器初始化能否抛出一个对话框?然后AHK可以查找WinActive等。添加额外的参数可能很棘手-Java应用程序实际上不是我的,我希望尽可能少地编辑它。RunWait的问题是,服务器进程在初始化之后会继续运行,而查询进程名或PID是有问题的,因为java进程出现在初始化之前。对话的想法可能行得通,如果找不到更好的方法,我会试试。