поддерживает JWS для запуска One-Jar - PullRequest
0 голосов
/ 28 ноября 2011

Можно ли запустить One-Jar с использованием JWS? One-JAR предоставляет пользовательский загрузчик классов, который знает, как загружать классы и ресурсы из jar-файлов внутри архива, тогда как в JWS нам нужно указывать каждый JAR-файл, который используется в ресурсах.

Что я должен указать в JNLP, если я пытаюсь запустить One-Jar -

<?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 голосов
/ 28 ноября 2011

Часть проблемы поддержки таких инструментов, как One-Jar, заключается в том, что для загрузки Jars в Jars требуется пользовательский загрузчик классов.По умолчанию JWS будет использовать обычные загрузчики классов JRE - которые не поддерживают его.

Есть два возможных способа обойти это (я знаю):

1.Получите доступ к пользовательскому загрузчику классов.

Получите экземпляр пользовательского загрузчика, используемого One-Jar, и установите его в качестве контекстного загрузчика классов.Для этого потребуется доверенное приложение., Но у меня складывается впечатление, что ваше приложение.является доверенным.

Я понятия не имею, предоставляет ли One-Jar API этот загрузчик для использования вашим собственным приложением.

2.При сборке используйте некоторые параметры.

Из Параметры и свойства виртуальной машины ..

one-jar.jar.names

  • true: Записанные классы хранятся в каталогах, соответствующих их именам jar.
  • false: Записанные классы сведены в один каталог.Дубликаты игнорируются (первые выигрыши)

Опция 2 nd звучит как стандартная «толстая банка».Это должно работать с обычным (по умолчанию) загрузчиком классов, используемым JWS.

...