调用外部脚本执行
Call external script to execute
在我的项目中,我导入了 perl 脚本。所以我的项目现在包含:
- 一个 class 文件,包含 java 执行任务的代码和
- 一个perl脚本,上面(1.)中需要调用class。
我需要实现的主要操作是:我想调用同一项目中存在的 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 的正确格式吗?
您提到 "syntax error",这可能是考虑到 Windows Java 应用程序中的路径看起来像 "C:\path\file"
的问题。
what if i want to write qualified name of perl script imported in the java project like
Perl 不是 "imported into" 任何 Java 项目。只有 Java 类 是 "imported"。
就Java而言,您的脚本只是磁盘上的纯文本文件。事实上,你执行一个 OS 命令,它甚至知道它是一个脚本,这依赖于安装的 Perl 和你的 PATH 上的 perl
二进制文件,所以它真的不可移植。 ..
也就是说,Java 没有 "fully-qualified" 文件名的概念。不过,它知道 "absolute paths",这就是我认为你的意思。但是,您应该更多地依赖 Java 应用程序的类路径,而不是特定计算机上的路径。
例如,Difference between getClass().getClassLoader().getResource() and getClass.getResource()?
因此,如果您的 Perl 文件位于类路径中,则需要获取它的绝对路径。类似于
String path = getClass().getResource("/script.pl").toString();
Runtime.getRuntime().exec("perl " + path);
在我的项目中,我导入了 perl 脚本。所以我的项目现在包含:
- 一个 class 文件,包含 java 执行任务的代码和
- 一个perl脚本,上面(1.)中需要调用class。
我需要实现的主要操作是:我想调用同一项目中存在的 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 的正确格式吗?
您提到 "syntax error",这可能是考虑到 Windows Java 应用程序中的路径看起来像 "C:\path\file"
的问题。
what if i want to write qualified name of perl script imported in the java project like
Perl 不是 "imported into" 任何 Java 项目。只有 Java 类 是 "imported"。
就Java而言,您的脚本只是磁盘上的纯文本文件。事实上,你执行一个 OS 命令,它甚至知道它是一个脚本,这依赖于安装的 Perl 和你的 PATH 上的 perl
二进制文件,所以它真的不可移植。 ..
也就是说,Java 没有 "fully-qualified" 文件名的概念。不过,它知道 "absolute paths",这就是我认为你的意思。但是,您应该更多地依赖 Java 应用程序的类路径,而不是特定计算机上的路径。
例如,Difference between getClass().getClassLoader().getResource() and getClass.getResource()?
因此,如果您的 Perl 文件位于类路径中,则需要获取它的绝对路径。类似于
String path = getClass().getResource("/script.pl").toString();
Runtime.getRuntime().exec("perl " + path);