我有一个由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作为变量?
答案 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并以您希望的方式处理它。