【问题标题】:running java main class using subprocess.Popen in python在 python 中使用 subprocess.Popen 运行 java 主类
【发布时间】:2015-10-06 11:56:53
【问题描述】:

我想通过python使用subprocess.Popen()执行java主类main.javamain.java 需要 3 个参数。

我想知道怎么做?例如我有一个HelloWorld.java 类:

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

我尝试使用以下命令在 python 中调用它:

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

其中 'sayHello' 是我要传入的字符串 args。它说

错误:无法找到或加载主类 C:.Users.testing.Hello.Main

谢谢

【问题讨论】:

    标签: java python subprocess


    【解决方案1】:

    您可以通过以下方式运行扩展名为 .class 的 java 文件:

    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

    【讨论】:

    • 注意:它不适用于 POSIX 系统;改用列表参数:'java your.path.Main arg1 arg2'.split()
    • 我在简单的 helloworld 类中尝试使用:print (subprocess.Popen('java C:/Users/Testing/src/HelloWorld.Main', shell=True, stdout=subprocess.PIPE).stdout.read()) 并得到错误:错误:无法找到或加载主类 C:.Users.src.Hello
    • @AndrewTobilko 我确实做了HelloWorld.class 并得到了那个错误,这就是为什么我不明白原因:) 并感谢如此快速的响应
    • @AndrewTobilko 当我在正确的目录中时它在命令提示符下完美运行,但是当我输入整个路径时不起作用,例如java C:/Users/testing/HelloWorld 它会返回相同的错误:错误:无法查找或加载主类 C:.Users.testing.HelloWorld 这可能是问题,因为在 python 中,我也输入了这样的完整路径
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2019-08-02
    • 1970-01-01
    • 2014-01-15
    • 2015-12-06
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多