如何在Java8Maven项目中使用plugin.jar中的JSObject并避免与JavaFX冲突

如何在Java8Maven项目中使用plugin.jar中的JSObject并避免与JavaFX冲突,java,maven,jenkins,jar,jsobject,Java,Maven,Jenkins,Jar,Jsobject,我正在开发一个小程序,它使用JSObject&co.(来自plugin.jar)在加载它的网页上调用JavaScript函数;该项目是使用纯mvn构建的:没有IDE,没有Jenkins 我的问题源于这样一个事实,Oracle提供了两个具有完全相同的FQ名称和不同的方法签名的类(请参见JSObject#getWindow()。将本地JDK升级到Java8后,JSObject上的构建失败,因为它最终从JavaFX(jfxrt.jar)而不是plugin.jar(类路径中的字母顺序?) 我一直在这里和

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

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

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

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

  • 所以问题是:有没有办法根据JDK8配置maven项目构建,以便它在所有平台(Windows、*nix等)上一致地从plugin.jar解析JSObject,而不是从jfxrt.jar解析JSObject?

    我的问题的可能重复之处在于编译时的类解析(即,如何在javac类路径中强制对具有不同签名的相同类的不同依赖项进行特定排序),而上面提到的是关于运行时类加载的问题。不幸的是,我没有访问javac类加载程序的权限,也不知道有什么方法可以强制JDK使用OSGi来执行其构建。我的问题可能与编译时的类解析有关(也就是说,如何在javac类路径中对具有不同签名的同一类的不同依赖项实施特定的排序),而提到的是关于运行时类加载的。不幸的是,我没有访问javac类加载程序的权限,也不知道有什么方法强迫JDK使用OSGi来执行其构建。