java - 在包含 list 的 jar 文件之外包含 jar 文件的问题

标签 java plugins classpath

基本上让我先解释一下我的目标是什么。我有一个用 JAVA 编写的动态 ETL 转换器应用程序。由于此应用程序的动态特性,我必须能够在应用程序 jar 文件之外的位置向应用程序添加插件 jar。 基本上想要具有以下目录结构:

应用文件夹
|- 插件/
|- 配置/
|- mainApp.jar

如果可能,我希望能够在我的 list 中使用通配符来动态添加位于插件文件夹中的 jars。 不幸的是,到目前为止我所尝试的一切都失败了。我尝试同时使用相对路径和绝对路径,但都没有用(有或没有通配符)。 但是,如果我在主应用程序的 jar 文件本身中包含插件文件夹,那么它可以正常工作,因为我不使用通配符。

所以我的问题是,是否真的有可能在 jar 外部有依赖关系,或者它们是否总是必须包含在 jar 中。 另一个问题是关于通配符的使用。不幸的是,我查看了 [java 文档] ( http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html ) 但没有成功。

到目前为止我尝试过的一些例子:

  • ../plugins/*
  • ../plugins/plugin.jar
  • /abolute/path/to/plugins/*
  • /abolute/path/to/plugins/plugin.jar

不幸的是,他们都没有做到这一点,所以非常感谢任何帮助......

最佳答案

是的,你可以在 jar 之外有依赖项。但是指定依赖的 jar 不支持通配符。

jar 需要在 list 中明确指定,并且位置需要与应用程序运行的位置相关

一个更好的选择可能是使用 Extension Mechanism

java -Djava.ext.dirs=/abolute/path/to/plugins/ ......

关于java - 在包含 list 的 jar 文件之外包含 jar 文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2976281/

相关文章:

java - Gradle - 将 JavaFX SDK 添加到类路径

java - 如何通过引用正确传递 Integer 类?

java - 如何在运行时从连接对象中获取 JDBC Driver 类名?

javascript - 控制台日志 : Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D' : The canvas has been tainted by cross-origin data

javascript - intelliJ 的默认 JavaScript 插件在哪里?

javascript - 如何通过 Thunderbird 扩展中的 javascript 设置 nsIEditor/nsIPlaintextEditor 中的光标位置?

java - Ant + JUnit : NoClassDefFoundError

java - Ant 构建的 Jar 程序看不到具有显式设置类路径的类

java - JTable.clearSelection() 与 Jtable.getSelectionModel.clearSelection() - 何时使用什么?

java - 三角数学用BigDecimal没用?