JWS是否支持启动One-Jar

时间:2011-11-28 07:53:17

标签: resources classpath jnlp executable-jar java-web-start

我可以使用JWS启动One-Jar吗? One-JAR提供自定义类加载器,它知道如何从存档中的jar加载类和资源,而在JWS中,我们需要指定资源中使用的每个JAR。

如果我尝试启动One-Jar -

,我应该在JNLP中指定的内容
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
    <information>
        <title>Application</title>
        <vendor>ABC</vendor>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.5+"
              href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="Application.jar" main="true" download="eager" />
    </resources>
    <application-desc main-class="com.simontuffs.onejar.Boot">
  </application-desc>
   <update check="background"/>
    <security>
        <all-permissions/>
      </security>
</jnlp>

我的应用程序JAR是One-JAR包含 -

com\simontuffs\onejar\<contains complied classes> like JarClassLoader$1.class etc
lib/<contains all jar>
OneJar.class
main/<my application's jar>
META-INF\MANIFEST.MF\ <contains >

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: One-Jar 0.96 Ant taskdef
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: com.application.main.Entry

Name: com/simontuffs/onejar/Boot$3.class
SHA1-Digest: +LPrezs+UEFcE3J7QvumcAEO8Z0=

Name: OneJar.class
SHA1-Digest: 28pzzJWqEpLk1xFwJ/jsAav8LyI=

Name: lib/commons-io-1.4.jar
SHA1-Digest: qHYtB+ds/eI5Ulel2ke6fB29Pc4=

etc..etc ..

如何在资源中指定这些 com / simontuffs / onejar / Boot $ 3.class 路径?

1 个答案:

答案 0 :(得分:0)

支持One-Jar等工具的部分问题是在Jars中加载Jars需要自定义类加载器。默认情况下,JWS将使用通常的JRE类加载器 - 它们不支持它。

有两种可能的方法(我知道)。

1。访问自定义类加载器。

获取One-Jar使用的自定义加载器的实例,并将其设置为上下文类加载器。这需要一个值得信赖的应用,但我会得到您的应用的印象。是值得信赖的。

我不知道One-Jar API是否为您自己的应用程序提供了此加载程序。

2。在构建时使用一些选项。

来自Options and VM Properties ..

<强> one-jar.jar.names

  • true:录制的类保存在与其jar名称对应的目录中。
  • false:录制的课程被展平为一个目录。                         重复项被忽略(第一次获胜)

2 nd 选项听起来像一个标准的“胖罐”#。这应该适用于JWS使用的传统(默认)类加载器。