Java 如何将deploy.jar添加到类路径?

Java 如何将deploy.jar添加到类路径?,java,classloader,Java,Classloader,我面临的问题是:我需要在运行时(从java动态地)将${java.home}/lib/deploy.jarjar文件添加到类路径中 使用Thread#setContextClassLoader(ClassLoader)(已提及)的解决方案不起作用,因为(如果有人能解释什么是真正的问题,欢迎您) 带有-Xbootclasspath/a:“%JAVA\u HOME%/jre/lib/deploy.jar”的解决方案对我来说不太合适,因为我想让“纯可执行jar”作为可交付文件:请不要包装脚本(例如,

我面临的问题是:我需要在运行时(从java动态地)将
${java.home}/lib/deploy.jar
jar文件添加到类路径中

  • 使用
    Thread#setContextClassLoader(ClassLoader)
    (已提及)的解决方案不起作用,因为(如果有人能解释什么是真正的问题,欢迎您)
  • 带有
    -Xbootclasspath/a:“%JAVA\u HOME%/jre/lib/deploy.jar”
    的解决方案对我来说不太合适,因为我想让“纯可执行jar”作为可交付文件:请不要包装脚本(例如,在Windows的用户环境中可能没有定义更多的
    %JAVA\u HOME%
    ,而且我需要为每个平台编写脚本)
  • 只有在Windows平台上构建时,将
    deploy.jar
    文件合并到我的可交付成果中的解决方案才有效。不幸的是,当在运行Linux的构建服务器上生成可交付成果时,我得到了依赖Linux的JAR,它不会在Windows上执行——它失败了,跟踪如下
我读过很多书和文章,但我没有额外的想法,如何正确处理这种情况

欢迎提供任何建议或解决方案

跟踪:

java.lang.NoClassDefFoundError: Could not initialize class com.sun.deploy.config.Config
    at com.sun.deploy.net.proxy.UserDefinedProxyConfig.getBrowserProxyInfo(UserDefinedProxyConfig.java:43)
    at com.sun.deploy.net.proxy.DynamicProxyManager.reset(DynamicProxyManager.java:235)
    at com.sun.deploy.net.proxy.DeployProxySelector.reset(DeployProxySelector.java:59)
...
java.lang.NullPointerException
    at com.sun.deploy.net.proxy.DynamicProxyManager.getProxyList(DynamicProxyManager.java:63)
    at com.sun.deploy.net.proxy.DeployProxySelector.select(DeployProxySelector.java:166)

引导类路径没有类加载器,因此不可能动态添加到它。但是,您可以向MANIFEST.MF添加一个Class Path:deploy.jar属性,并要求您的jar使用-Xbootclasspath/a:myjar.jar运行。如果deploy.jar将位于同一目录中,它也将加载到引导类路径中。

引导类路径没有类加载程序,因此无法动态添加到它。但是,您可以向MANIFEST.MF添加一个Class Path:deploy.jar属性,并要求您的jar使用-Xbootclasspath/a:myjar.jar运行。如果deploy.jar将位于同一目录中,它也将加载到引导类路径中。

@Jevgeni:如果您已经将其添加到引导类路径中,我是否需要将
deploy.jar
添加到类路径中?我认为没有。无论如何,我想知道如何动态添加这个库。如果您在上面有我提到的解决方案,请共享。@Jevgeni:如果您已经将其添加到bootclasspath中,我是否需要将
deploy.jar
添加到classpath中?我认为没有。无论如何,我想知道如何动态添加这个库。如果你有我提到的解决方案,请分享。