我看过Runtime.getRuntime().exec("perl script.pl")
是一个选项,但这是最好的方法吗?
我需要该脚本的答案,所以在某些情况下我必须阅读脚本的返回,尽管我可能会在其他案例中从文本文件中读取它。
无论如何,exec()
是从Java调用Perl脚本的好方法吗?我应该注意,我正在研究Java Web应用程序,因此安全性是一个问题。
答案 0 :(得分:10)
您可以使用Runtime
.getRuntime()
.exec()
或使用Process API。
Process API允许您获取脚本的输出,因此您可以同时进行通信。
exitValue()
和getInputStream()
似乎就是您所需要的。
答案 1 :(得分:4)
这概述了如何相当优雅地完成它,虽然它可能比它的价值更多努力: http://search.cpan.org/~nwclark/perl-5.8.9/jpl/docs/Tutorial.pod
概述:
JPL很好地支持,但这是一个复杂的过程:
JPL预处理器解析.jpl文件并为Perl方法生成C代码包装器。它还生成Java和Perl源文件。
C编译器编译包装器并将其链接到libPerlInterpreter.so共享库,从而为包装器生成共享库。
Java编译器编译Java源文件,该文件使用本机方法加载包装器。
包装器将Java代码连接到Perl源文件中的Perl代码。
幸运的是,通用的Makefile.PL简化了这个过程。这是一个为您生成Makefile的Perl脚本。
答案 2 :(得分:3)
exec()可能是最佳选择,您可以使用exitValue()捕获它的返回值。您可能也对Inline::Java感兴趣。
-John
答案 3 :(得分:1)
请记住,无论Perl脚本创建什么文件,它都是在Java工作文件夹中创建的。只需将该文件称为“./myPerlCreatedFile.ext”
即可