2013-08-14 3 views
1

Привет, я создаю приложение в javafx 2.2 и, компилируя собственный пакет (EXE), я вижу, что в Runtime мне не хватает библиотеки, в которой я нуждаюсь.Как добавить файл .jar в собственный пакет?

MyApp \ выполнения \ JRE \ Lib \ вн \ sunjce_provider.jar

Я пытаюсь добавить его, как это в моем build.xml

<fx:deploy width="${javafx.run.width}" height="${javafx.run.height}" 
      nativebundles="exe" 
      outdir="${basedir}/${dist.dir}" outfile="${application.title}"> 
    <fx:application name="${application.title}" mainClass="${javafx.main.class}"/> 
    <fx:resources> 

     ... 

     <fx:fileset dir="${platform.home}/jre/lib/ext" includes="sunjce_provider.jar" 
       type="data"/> 

    </fx:resources> 
    <fx:info title="${application.title}" vendor="${application.vendor}"/> 
</fx:deploy> 

Но это только оставляет на

MyApp \ app \ sunjce_provider.jar

Есть ли способ сделать это?

ответ

4

включая библиотеки приложений

В этом разделе показано, как включить стандартные банки, которые ваше приложение полагается.

Примеры build.xml фрагмент из ссылки муравей задачи JavaFX, ключ линия <fx:fileset dir="dist" includes="lib/*.jar"/>:

<!-- Expect definition of JavaFX ant tasks is already imported --> 

<fx:jar destfile="dist/application.jar"> 
    <!-- Details about application --> 
    <fx:application name="Sample JavaFX application" 
      mainClass="test.MyApplication"/> 

    <!-- Define what auxilary resources are needed --> 
    <fx:resources> 
     <fx:fileset dir="dist" includes="lib/*.jar"/> 
    </fx:resources> 

    <!-- What to include into result jar file? 
     Everything in the build tree --> 
    <fileset dir="build/classes"/> 

    <!-- Customize jar manifest (optional) --> 
    <manifest> 
     <attribute name="Implementation-Vendor" value="Samples Team"/> 
     <attribute name="Implementation-Version" value="1.0"/> 
    </manifest> 
</fx:jar> 

модифицируя компоненты JRE

В этом разделе показано, как настроить среду выполнения Java компоненты, которые связаны с вашим приложением.

См. Java Deployment blog on including the sun jce provider in native packaging (указано на вопрос: sunjce_provider.jar in jre for standalone javafx application).

Соответствующие разделы (копировать и вставить из записи в блоге) являются:

Если вы используете упаковочные инструменты для производства устанавливаемая пакет не может быть необходимо настроить изображение приложения, прежде чем он обернут в установщик. Зачем? Например, вы можете захотеть подписать приложение, поэтому оно не кажется ненадежным для ОС (например, чтобы удовлетворить требованиям Mac OS X Gatekeeper).

Также по умолчанию автономное приложение не содержит полной копии Java Runtime. Мы включаем только набор обязательных компонентов. Одной из причин, почему этот подход был сделан, является то, что мы хотим уменьшить размер пакета. Однако есть ситуации, когда ваше приложение может зависеть от этих необязательных компонентов, и в этом случае вам понадобится способ добавить их в частную среду выполнения. Например, https-соединения не будут работать, если отсутствует jre/lib/ext/sunjce_provider.jar.

В настоящее время это может быть достигнуто путем предоставления настраиваемого сценария конфигурации, который выполняется после заполнения изображения приложения. Как и в приведенном выше примере со значком, вам нужно включить подробный вывод, чтобы найти имя файла сценария, а затем отбросить его в место, где будут найдены инструменты для упаковки. Обратите внимание, что язык сценариев также зависит от платформы. В настоящее время мы поддерживаем только оболочку для Mac/Linux и Windows Script на окнах.

Как вы узнали, где находится изображение приложения? В настоящее время пользовательские скрипты запускаются в каталоге, где хранятся файлы конфигурации, но доступ к образам приложения можно получить с использованием относительного пути к конкретной платформе. Вы можете получить этот путь из подробного вывода или путем установки переменной среды JAVAFX_ANT_DEBUG в true для сохранения промежуточных артефактов сборки.

Вот пример сценария (внесенный Джоном Петерсеном), который вы можете добавить, чтобы добавить jre/lib/ext/sunjce_provider.jar в пакет приложений MyApp на платформе Windows. Сценарий с использованием Javascript, но вы также можете использовать скрипты VBScript для Windows.

<?xml version="1.0" ?> 
<package> 
    <job id="postImage"> 
    <script language="JScript"> 
    <![CDATA[ 
     var oFSO = new ActiveXObject("Scripting.FileSystemObject"); 
     var oFolder = oFSO.getFolder("."); 
     var from = oFolder.path + "\\MyApp\\app\\sunjce_provider.jar"; 
     var to = oFolder.path + "\\MyApp\\runtime\\jre\\lib\\ext"; 
     if (!oFSO.FolderExists(to)) { 
      oFSO.CreateFolder(to); 
     } 
     to += "\\"; 
     oFSO.CopyFile(from, to); 
    ]]> 
    </script> 
    </job> 
</package> 
+2

Спасибо, я просто добавил ответ, как это, но я собираюсь принять этот. Поскольку это было немного непонятно для меня, а для кого-то другого, файл должен быть именем ** MyApp ** - post-image.wsf и находиться под директорией pathpath и package/windows / – Hadriel

Смежные вопросы