![](/img/trans.png)
[英]How to create a communication between Java Desktop Application and Web Application PHP?
[英]How to create a 2 way communication between Java and Python
尽管我有一些编程经验,但我对 Java 和 Python 都很陌生。 对于作业,我需要创建一个以某种方式使用 Java 的程序。 我的项目将使用 Java 作为 UX,并使用 Python 进行信号处理和特征提取,因为它有一些很好的工具。 但是,我的问题是如何在两个程序之间建立通信。 也许以前有人问过这个问题,但是由于我不知道最好的术语,所以我找不到答案。
In my Java Program, I can get the file path to a.csv file, send it to Python, and Python returns the original signals and processed signals. 为此,我写道:
private static void sendPython(String path, JTextField console)
{
String pathPython = "C:\\Users\\gonca\\Desktop\\untitled0.py";
String [] cmd = new String[3];
cmd[0] = "python";
cmd[1] = pathPython;
cmd[2] = path;
Runtime r = Runtime.getRuntime();
try
{
Process p = r.exec(cmd);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s = "";
while((s = in.readLine()) != null)
{
console.setText(s);
}
}
catch (IOException e)
{
console.setText("Unable to run python script");
}
}
我正在考虑使用 py 脚本 output 将信号放在分隔行中,值由“,”或“;”分隔,并使用 BufferedRead 读取每一行,分隔值并从分隔值创建一个新的 ArrayList。 但是,在开始更加努力地做到这一点之前,我想知道这是否是最好的方法,或者是否有更有效的方法来做到这一点。
还有更多方法可以做到这一点:
解决方案1:
将 java 中的 python 库与System.loadLibrary
一起使用,并调用 python 方法。 (这里是一个使用 C/C++ 的例子: Calling a python method from C/C++, and extracting its return value )
解决方案2:
启动 python 作为另一个进程,并使用 D-Bus(或类似的东西)与其通信。
由于您没有提到您的应用程序有多健壮,我可以想到一个解决方案,如果您正在规划更高级别的架构,可以使用该解决方案。
尽量避免在代码中运行时执行面向用户的命令,就好像它没有得到妥善管理一样,总是有可能出现安全漏洞
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.