从代码中调用jar中的java类

时间:2015-07-27 20:09:34

标签: java jar

我有一个由maven创建的jar,其中包含所有依赖项。我有另一个想要将jar用作库的java代码。我的java代码和jar中的类属于两个不同的包。

以下显示了我如何在jar中运行主类:

url('^password_reset/$', auth_views.password_reset,
    {
        'template_name': 'accounts/reset_password.html',
        'email_template_name': 'email/password_reset/password_reset.txt',
        'html_email_template_name': 'email/password_reset/password_reset.html',
        'subject_template_name': 'email/password_reset/password_reset_subject.txt'
    },
    name='password_reset'),

如何调用jar中的主类(相当于上面的命令)并在我的java代码中执行完成后将其STDOUT作为变量?

2 个答案:

答案 0 :(得分:1)

您可以使用ProcessBuilder来执行此类操作,但是否应该从另一个Java程序调用Java程序是另一个问题:

Process process = new ProcessBuilder("java", "-Dlog4j.configurationFile=src/test/resources/log4j2.xml", "-cp", "pathtojars com.mainclass", "\"parameters to mainclass\"", "\"inputfile\"").start();
OutputStream os = process.getOutputStream();

答案 1 :(得分:0)

此外,如果您只想阅读控制台输出,您可以执行类似这样的操作

--with-libdir=lib64

或者你也可以写这样的ProcessBuilder: Forwarding stdout and stderr of started processes without blocking the main thread

正如dici指出的那样,您首先需要获取流程的OutPutStream并以您希望的方式处理它。