java - 如何将 perl 脚本嵌入到 jar 文件中执行?

标签 java perl jar

我是 Perl 的新手,但已经使用 Java 编程几个月了(来自 C++ 背景)。我写了一个解析一些数据日志的 Perl 脚本,现在我工作的客户想要一个 GUI。 GUI 已创建为 java 小程序(使用 Netbeans),我想将 perl 脚本“嵌入”其 jar 文件中作为默认安全功能。预计 perl 脚本将来会进行多次更新,因此我想对其进行设置,以便在更新出现时用户必须做的就是通过 GUI 定义最新 perl 脚本的新文件路径。我已经使用文件浏览器实现了此功能,并且一切正常。

我遇到的问题非常简单,对于具有更多 Java 经验的人来说可能不是很难。以防万一他们将来收到的更新的 perl 脚本无法正常工作,我希望他们能够使用默认的“嵌入式”脚本(如果他们不得不求助于此)。当我通过 Netbeans 运行 applet 时,一切正常,但是当我尝试从命令行运行 jar 文件时,程序返回一个错误,指出找不到该文件。我可能没有使用正确的术语来搜索此问题的解决方案,但我希望能够让我的 jar 文件在运行时执行嵌入式 perl 脚本。任何建议表示赞赏。我试过将 perl 文件放在与 java 文件相同的包中,并仅通过文件名调用脚本,但这是不行的。

最佳答案

您可以访问 jar 中的任何文件作为类路径资源,但您将遇到的问题是用户可能没有安装 perl 解释器。

编辑:既然您已经提到用户将拥有 Perl 运行时,那么这是可行的。您可以尝试使用 Process.getOutputStream() 管道传输文件的内容,或者使用 File.createTempFile() 将内容复制到临时文件并将该文件名传递为perl 解释器的参数。

关于java - 如何将 perl 脚本嵌入到 jar 文件中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837941/

相关文章:

java - 没有IDE无法安装jar包

java - Gradle 在目录中包含传递依赖项

java - 依赖 order by 中空值的顺序是否安全?

java - 使用@Async调用方法与在新线程中调用方法

java - java中是否可以不使用main方法来执行jar文件

perl - 我应该为 Perl GUI 使用 Perl/Tk、Tcl::Tk 还是 Tkx?

Perl:将新值重新分配给标量会覆盖其在 RAM 中的当前内容吗?

java - Intellij 中的调用树

java - 从 Zip 文件中的文件中读取内容

perl - 如何通过调用外部程序来替换 perl 模块的使用?