![](/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.