检测用户的计算机上是否安装了某些Java软件

Kry*_*ten 2 java operating-system detect

我有一个Java应用程序,它需要某些软件(其中一个是Perl)才能运行.我以前用来检测Perl的是:

Runtime.getRuntime().exec("perl Test.pl");
Run Code Online (Sandbox Code Playgroud)

如果有IOException声明没有Perl.

然而,我的一个用户抱怨该应用程序仍然失败,因为他没有将Perl放在他的路径变量中.所以这就是为什么我要问:是否有任何跨操作系统方法来检测用户系统上是否安装了Perl(或任何其他软件)以及程序的路径?

Esk*_*sko 6

这些问题似乎不时出现,答案(几乎)总是不行.否定答案的最普遍原因是Java在同质的虚拟机环境中运行,在所有平台上设计相同; 您无法在至少最受支持的平台上可靠地抽象/可靠地执行的操作无法轻松完成.通常,检测OS中的外部事件(例如,还运行/安装了哪些非Java应用程序)属于"不容易做"的类别.

当然,为了这个目的,JNI库可能需要/市场,但是那些问题似乎总是希望从跨平台需求中大量引导,这就是为什么简短的答案是"不".据我所知,你目前所做的是检测Perl的最简洁方法,除非你愿意在你的项目中包含perljvm或类似的东西.