在我的项目中,我导入了perl脚本。所以我的项目现在包含:
我需要实现的主要操作是:我想调用同一项目中存在的perl脚本,以便在java代码的中间执行。
类似的东西:
public class Demo_Java{
// ...
System.out.println("entered 1st###############");
Process p = Runtime.getRuntime().exec("perl /javaProject/perlScript.pl");
p.waitFor();
}
但这不起作用,我只是提到它来说明要求..
有什么办法可以将perl脚本调用到java文件中吗?
编辑:我尝试运行以下代码:
process = Runtime.getRuntime().exec("perl C:/javaProject/perlScript.pl ");
process.waitFor();
if(process.exitValue() == 0)
{
System.out.println("Command execution passed");
}
else
{
System.out.println("Command execution Failed");
}
我收到的错误是 - > command execution failed
..可能是由于Runtime.getRuntime().exec("perl C:/javaProject/perlScript.pl ");
上的语法错误,这是写这个exec的正确格式吗?
答案 0 :(得分:1)
你提到了“语法错误”,这可能是考虑到Windows Java应用程序中的"C:\\path\\file"
路径的问题。
如果我想编写在java项目中导入的perl脚本的限定名称,如
,该怎么办?
Perl不会“导入”任何Java项目。只有Java类被“导入”。
就Java而言,您的脚本只是磁盘上的纯文本文件。事实上你执行的OS命令甚至知道它是一个脚本,这依赖于你的PATH上安装的Perl和perl
二进制文件,所以它真的不可移植......
话虽如此,Java没有“完全限定”文件名的概念。但它知道“绝对路径”,这就是我认为你的意思。但是,您应该更多地依赖Java应用程序的类路径,而不是特定计算机上的路径。
例如,Difference between getClass().getClassLoader().getResource() and getClass.getResource()?
因此,如果你在类路径上有你的Perl文件,你需要获得它的绝对路径。有点像,
String path = getClass().getResource("/script.pl").toString();
Runtime.getRuntime().exec("perl " + path);