如何将deploy.jar添加到classpath?

时间:2010-03-24 17:45:04

标签: java classloader

我遇到了问题:我需要将${java.home}/lib/deploy.jar JAR文件添加到运行时的类路径中(从java动态)。

  • Thread#setContextClassLoader(ClassLoader)(提及here)的解决方案由于this bug无效(如果有人可以解释什么是真正的问题 - 欢迎您)。
  • 使用-Xbootclasspath/a:"%JAVA_HOME%/jre/lib/deploy.jar"的解决方案对我来说效果不佳,因为我希望将“纯可执行jar”作为可交付成果:请不要包装脚本(更多%JAVA_HOME%以外的用户可能无法定义例如,在Windows环境中,我需要为每个平台编写一个脚本)
  • deploy.jar文件合并到我的可交付成果中的解决方案只有在Windows平台上构建时才有效。不幸的是,当在Linux上运行的构建服务器上生成可交付成果时,我得到了依赖于Linux的JAR,它不能在Windows上执行 - 它在下面的跟踪中失败了。

我已阅读How the Java Launcher Finds ClassesJava programming dynamics: Java classes and class loading条款,但我没有多余的想法,如何正确处理这种情况。

非常欢迎任何建议或解决方案。

跟踪:

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)

1 个答案:

答案 0 :(得分:0)

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