如何添加.jar文件到本地捆绑?(How to add a .jar file to native

2019-10-18 12:33发布

嗨,我创造的JavaFX 2.2的应用程序,并在编译本地捆绑软件(EXE),我可以看到,在运行时我怀念一个图书馆,我需要。

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的\应用程序\程序(sunjce_provider.jar)

有没有办法做到这一点?

Answer 1:

其中包括应用程序库

本节将展示如何在您的应用程序依赖于标准瓶。

示例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运行时组件。

请参阅上,包括在本地包装的Sun JCE提供Java部署博客 (讨论指出: 对于独立JavaFX应用程序中把sunjce_provider.jar JRE )。

相关章节(复制和博客条目粘贴)是:

如果您使用的包装工具制作的安装包有可能是一个需要调整应用图像之前它被包裹成安装程序。 为什么? 例如,您可能要签名的应用程序,因此它不会似乎是不可信的OS(例如讨好的Mac OS X关守)。

默认情况下也一个自包含的应用程序不包含Java运行时的完整副本。 我们只包括设置强制成分。 为什么是采取这个方法的部分原因是,我们要减少封装尺寸。 不过,也有您的应用程序可能依赖于这些可选的组件,在这种情况下,你需要一种方法来将它们添加到私有运行情况。 例如HTTPS连接将无法正常工作,如果JRE / lib / ext目录/程序(sunjce_provider.jar)丢失。

目前,这可以通过提供填充应用图像之后执行自定义的配置脚本来实现。 就像上面的图标的例子,你需要启用详细输出找到脚本文件的名称,然后将其放置到包装工具将找到它的位置。 需要注意的是脚本语言是特定的平台了。 目前,我们只支持Windows的Mac / Linux和Windows脚本外壳。

你如何找出应用图像所在? 目前,自定义脚本在配置文件存储,但应用图像可以使用相对特定平台的路径访问的目录中运行。 您可以从获得的详细输出该路径或者通过环境变量JAVAFX_ANT_DEBUG设置为true,以保持中间构建工件。

下面是示例脚本(贡献的约翰·彼得森),你可以用它来的jre / lib / ext目录/加把sunjce_provider.jar到MyApp的的Windows平台上的应用程序包。 脚本使用Javascript,但你也可以使用Windows的VBScript脚本。

<?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> 


文章来源: How to add a .jar file to native bundle?