2015-07-16 6 views
2

Я хочу выполнить java main class main.java с помощью python с помощью subprocess.Popen(). main.java принимает 3 аргумента.java main class using subprocess.Popen in python

Интересно, как это сделать? Например, у меня есть HelloWorld.java класс:

public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("Hello World!" + args[0]); 
    } } 

Я пытался вызвать его в питона с помощью команды:.

print (subprocess.Popen('java C:/Users/testing/Hello.Main sayHello', shell=True, stdout=subprocess.PIPE).stdout.read())

где «SayHello» является строкой арг я хочу передать это сказал

Ошибка: не удалось найти или загрузить основной класс C: .Users.testing.Hello.Main

Благодаря

ответ

1

Вы можете запустить файл Java с расширением .class следующим образом:

java your.path.Main arg1 arg2 

где

  • java - команда, которая запускает интерпретатор Java
  • your.path.Main - полное имя вашего класс (без .class)
  • arg1 arg2 - аргументы (написанные пробелами или между ")

Далее, когда вы отформатировали эту линию, он передает в subprocess.Popen() в качестве аргумента.

subprocess.Popen('java your.path.Main arg1 arg2') 

Я не программист Python, потому что я советую вам прочитать documentation about this method.

+0

примечание: оно не будет работать на системах POSIX; вместо этого используйте аргумент списка: '' java your.path.Main arg1 arg2'.pl (() ' – jfs

+0

Я пробовал его с помощью простого класса helloworld, используя:' print (subprocess.Popen ('java C:/Users/Testing/src/HelloWorld.Main ', shell = True, stdout = subprocess.PIPE) .stdout.read()) 'и получил ошибку: ** Ошибка: не удалось найти или загрузить основной класс C: .Users.src.Hello ** – RLe

+0

@AndrewTobilko Я сделал 'HelloWorld.class' и получил эту ошибку, поэтому я не понимаю причину :) и спасибо за такой быстрый ответ. – RLe