1

我正在开发一个使用JSObject & co 的小程序。(来自 plugin.jar)在加载它的网页上调用 JavaScript 函数;该项目是使用纯 mvn 构建的:没有 IDE,没有 Jenkins。

我的问题源于Oracle 提供了两个具有完全相同 FQ 名称和不同方法签名的类(参见 JSObject#getWindow())。将本地 JDK 升级到 Java8 后,JSObject 上的构建失败,因为它最终从 JavaFX(jfxrt.jar)而不是 plugin.jar(类路径中的字母顺序?)中选择它。

我一直在这里和其他地方寻找解决方案,我遇到的是:

  1. 显式地重新排序 IDE 中的依赖项(但我没有 IDE...)
  2. 在 POM 中使用 maven 依赖项排序(从 2.0.X 开始支持,我在 3.3.9 上运行,但这似乎适用于项目依赖项,而不是系统 JAR)
  3. 使用排除项(似乎也不适用于 JDK 依赖项)
  4. 在 Jenkins 上,由于 Jenkins 在项目依赖项之后将 JDK JAR 添加到构建类路径中,事情似乎自动解决了。

所以问题是:有没有办法配置一个针对 JDK8 构建的 maven 项目,以便在所有平台(Windows、*nix 等)上始终从 plugin.jar 而不是 jfxrt.jar 解析 JSObject

4

0 回答 0