java - 使用 System() 从 Perl 调用 Java .jar 程序

标签 java perl system

标题几乎说明了一切,我正在尝试让 Java 程序(.jar 文件)从 Perl 程序运行。我在 Stackoverflow 上读到另一篇文章说这个语法是正确的:

system("java filename.jar");

然而,这给了我以下错误。我不确定问题是否在于它将文件名显示为“filename/jar”而不是“filename.jar”

Exception in thread "main" java.lang.NoClassDefFoundError: filename/jar
Caused by: java.lang.ClassNotFoundException: filename.jar
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

最佳答案

您需要将其命名为 java -jar filename.jar

如果您遗漏了 -jar,那么 java 会认为您正在尝试运行一个名为 filename.jar 的类,它会尝试从 >文件名/jar 文件。由于您没有该文件,java 会抛出您看到的错误。

关于java - 使用 System() 从 Perl 调用 Java .jar 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3763501/

相关文章:

linux - 重命名文件和目录(添加前缀)

mysql - 安装 DBD::mysql 时缺少 mysql_config 错误

c++ - 在 C Linux 中捕获系统事件

c# - 获取 Windows 机器上的 PC(系统)信息

java - 如何将 map 写入包裹?

java - 用于几种类型请求的 JMX Bean

perl - 从 perl 脚本使用 awk 进行远程 shell 调用

c - 在 C 中使用 execve() 调用 "pbmtextps"失败?

java - Spring 异步 REST 与 DeferredResult 和 Reactor

java - 为每个新请求创建新的 java.sql.Connection