这听起来是一个合理的设计。你会写这样的东西。
import java.lang.Runtime;
int width = 99;
try {
Runtime runt = Runtime.getRuntime()
Process proc = runt.exec('/usr/bin/perl', '/path/to/myperl.pl', Integer.toString(width));
proc.waitFor();
}
catch (Exception ioe) {
ioe.printStackTrace();
}
当然,您必须将 /usr/bin/perl 调整为您自己的 perl 可执行文件的实际位置,或者您可以调用 shell 让它通过使用来搜索路径
runt.exec( '/bin/bash', '-c', 'perl', '/path/to/myperl.pl', Integer.toString(width) );
至于如何将图像返回给客户端,您并没有过多说明您的 Perl 程序是如何工作的,但是您要么告诉它在哪里写入文件,要么它自己决定并告诉你它放在哪里之后
如果是前者,那你想必是在命令行传递路径的,所以只需要扩展调用上面runt.exec就可以传递另一个参数
如果是后者,那么大概程序会打印到 STDOUT,它已将新文件放入其中,您需要从 Java 代码中读取该流以收集信息。这看起来像proc.waitFor() 调用的到位
import java.io.*;
BufferedReader inp = new BufferedReader(
new InputStreamReader(proc.getInputStream())
);
while ( ( line = inp.readLine() ) != null ) {
// Process output of Perl code to get file location
}