我正在开发一个使用 Java 但使用 Py4J 实现的 Python 包装器的项目。为了使其正常工作,我需要首先Main.java
使用正确的命令行参数运行 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 秒内完成时才有效,并且如果初始化完成得更快,它也会不必要地空闲。相反,我希望有一个在完成Script.py
后立即运行的解决方案Main.initialize()
。
我不能做的一件事是:
public void initialize() {
// Server initialization code
Runtime.getRuntime().exec("python .\python\Script.py");
}
或从 Java 应用程序内部对 python 脚本的类似直接调用,因为同一服务器也可能与其他脚本一起运行,甚至作为独立服务器运行。
我也没有死心塌地使用 AHK,任何可行的解决方案(AHK、Batch、Python、Java)都可以。