использовать Java для вызова Python, я работал в Windows, это нормально. Но проблема возникает при развертывании проекта в Linux - PullRequest
0 голосов
/ 17 января 2019

ОПИСАНИЕ ПРОБЛЕМЫ: Я использую java для разработки своего проекта. В процессе работы мне нужно использовать Java для вызова python.as: (windos enviroment)

String[] args1 = new String[] { "C:\\anaconda\\envs\\test\\python.exe",
                "src/main/java/cn/ihep/python/testNmap.py", ipAddrs, port, scanModel };
Process pr = Runtime.getRuntime().exec(args1);
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
StringBuffer res = new StringBuffer();
while ((line = in.readLine()) != null) {
    System.out.println(line);
    res.append(line);
}

в среде Windows, моя работа в порядке!

Но позже я хочу развернуть проект в linux, поэтому мне нужно изменить интерпретатор phthon. Следующим образом: (на linux)

String[] args1 = new String[] { "python",
                "src/main/java/cn/ihep/python/testNmap.py", ipAddrs, port, scanModel };
Process pr = Runtime.getRuntime().exec(args1);
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
StringBuffer res = new StringBuffer();
while ((line = in.readLine()) != null) {
    System.out.println(line);
    res.append(line);
}

в среде Linux, моя версия на Python - 2.7.5.


функция приведенного выше кода заключается в обнаружении активов с помощью Nmap (инструмент с открытым исходным кодом). Конечно, я установил в Windows и Linux. Путь следующий:

portScanner = nmap.PortScanner(nmap_search_path=('nmap', '/usr/bin/nmap', '/usr/local/bin/nmap', '/sw/bin/nmap', r'C:\Program Files (x86)\Nmap\nmap.exe'));

путь в windows: 'C: \ Program Files (x86) \ Nmap \ nmap.exe'; путь в Linux: '/usr/bin/nmap'.

Я думаю, что путь Nmap в приведенном выше коде должен быть в порядке. Может быть, я был не прав, есть ли друзья с подобными проблемами ???

...