java - 您可能需要安装 My::Module 模块

标签 java perl

我现在在一个Web漏洞扫描器项目中工作,所以我会在我的java中运行我的perl脚本,perl脚本是来自kali linux的uniscan开源工具,所以当我单击“go”运行脚本时,会出现此消息

Can't locate Uniscan/Crawler.pm in @INC (you may need to install the Uniscan::Crawler module) (@INC contains: ./Uniscan C:/Perl64/site/lib C:/Perl64/lib .) at C:\uniscan\uniscan.pl line 25. BEGIN failed--compilation aborted at test\uniscan.pl line 25.

但是,当我运行 hello world 脚本时,它在我的控制台中正确显示,没有问题。这是我在 java 中调用 perl 脚本的代码

try {
                String[] commande = {"perl", "C:\\uniscan\uniscan.pl"};
                Process p = Runtime.getRuntime().exec(commande);
                AfficheurFlux fluxSortie = new AfficheurFlux(p.getInputStream());
                AfficheurFlux fluxErreur = new AfficheurFlux(p.getErrorStream());

                new Thread(fluxSortie).start();
                new Thread(fluxErreur).start();

                p.waitFor();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

uniscan的代码是here

我需要帮助,下周我的最终学位被阻止

最佳答案

该程序依赖于在模块搜索路径 (@INC) 中找到的脚本目录,但不能确保这一点。

如果从脚本目录运行脚本,它会起作用,因为默认情况下 . 位于 @INC 中。但是您正在从不同的目录运行脚本。

删除以下无用行:

use lib "./Uniscan";

将其替换为以下内容:

use FindBin qw( $RealBin );
use lib $RealBin;

关于java - 您可能需要安装 My::Module 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37358129/

相关文章:

java - Ubuntu 没有 Java?

java - 如何在没有任何内置函数的情况下从java中的两个字符串中删除重复的字母表?

java - 如何在swt中等待另一个shell关闭一个shell?

perl - 为什么我不能在 Perl 打印后立即有一个文字列表切片?

string - Perl 范围字符串 ID

arrays - 在使用严格引用时不能将字符串用作 ARRAY 引用

java - 如何在用户退出后重新启动我的游戏(Libgdx)

java - 使用 Quartz 时无法创建 JobDetail 接口(interface)的实例

即使文件未丢失,Perl 可执行文件也会崩溃

json - 500 无法在 perl 中使用 lwp 连接到 url