繁体   English   中英

Java Webstart在Windows上加载linux swt jar

[英]Java webstart loading linux swt jars on windows

我有一个Java Webstart应用程序,该应用程序使用swt作为界面(并包括DJ Native Swing)。 该应用程序在Windows上运行良好,直到我尝试将linux和mac osx swt jar添加到该应用程序中以支持这些平台。 从netbeans仅链接正确的jar时,该应用程序在linux下运行良好,但是在任何平台上通过java webstart启动该应用程序时,似乎加载了错误的jar文件。

这就是我在launch.jnlp中(以及其他东西)的内容:

<resources os="Windows" arch="x86">
    <j2se java-vm-args="-Xmx512m" version="1.5+"/>
    <jar href="lib/swt-win32-x86.jar"/>
    <nativelib href="lib/swt-win32-x86.jar"/>
</resources>

<resources os="Windows" arch="x86_64">
    <j2se java-vm-args="-Xmx512m" version="1.5+"/>
    <jar href="lib/swt-win32-x86_64.jar"/>
    <nativelib href="lib/swt-win32-x86_64.jar"/>
</resources>

<resources os="Windows" arch="amd64">
    <j2se java-vm-args="-Xmx512m" version="1.5+"/>
    <jar href="lib/swt-win32-x86_64.jar"/>
    <nativelib href="lib/swt-win32-x86_64.jar"/>
</resources>

<resources os="Linux" arch="i386">
    <j2se java-vm-args="-Xmx512m" version="1.5+"/>
    <jar href="lib/swt-linux-x86.jar"/>
    <nativelib href="lib/swt-linux-x86.jar"/>
</resources>

<resources os="Linux" arch="amd64">
    <j2se java-vm-args="-Xmx512m" version="1.5+"/>
    <jar href="lib/swt-linux-x86_64.jar"/>
    <nativelib href="lib/swt-linux-x86_64.jar"/>
</resources>

<resources os="Mac OS X" arch="x86_64">
    <j2se java-vm-args="-XstartOnFirstThread -Xmx512m" version="1.5+"/>
    <jar href="lib/swt-macos-x86_64.jar"/>
</resources>

<resources os="Mac OS X" arch="x86">
    <j2se java-vm-args="-XstartOnFirstThread -Xmx512m" version="1.5+"/>
    <jar href="lib/swt-macos.jar"/>
</resources> 

如果我理解正确,这将导致仅在swt-win32-x86.jar上在Windows上(取决于拱)。 但是,当我在32位jvm的Windows 7 64位操作系统上启动该应用程序时,出现以下错误:NativeSwing [1]:由以下原因引起:java.lang.UnsatisfiedLinkError:无法加载SWT库。 原因:NativeSwing [1]:java.library.path中没有swt-gtk-4234 NativeSwing [1]:java.library.path中没有swt-gtk NativeSwing [1]:无法加载库:C:\\ Users \\ dolf.swt \\ lib \\ win32 \\ x86 \\ swt-gtk-4234.dll NativeSwing [1]:无法加载库:C:\\ Users \\ dolf.swt \\ lib \\ win32 \\ x86 \\ swt-gtk.dll

当然,在Windows上找不到swt-gtk,只有在Linux上才需要。 如果我在Java的临时Internet文件查看器下的Java控制面板中查看“资源”,则确实可以看到java webstart已下载了swt-linux-x86.jar和swt-win32-x86.jar。 显然,java webstart下载了错误的jar文件。

我希望任何人都知道为什么会出错。

我发现了问题所在。

在Netbeans中,我将swt jar文件链接到“库”下。 我对这些东西在netbeans / java中的工作方式了解有限(我不是从问题可以推断出的Java开发人员),但是我猜想这将导致所有链接的swt库都被下载,无论launch.jnlp指定了什么。 因此,错误的jar文件在错误的平台上显示。

构建时需要做的是从netbeans的库列表中排除swt jar,然后在jnlp文件中指定资源。 这样,webstart将仅下载在适用资源标签中找到的swt jar。

如果还需要对它们进行签名,请将以下部分添加到build.xml中,以确保在签名开始之前将swt jar文件复制到dist / lib目录中,因此netbeans将自动对其进行签名( dist / lib目录已正常签名)。

<target name="-post-jar">
    <copy todir="${jnlp.dest.dir}/lib/">
        <fileset dir="${build.dir}/../lib/">
            <filename name="swt*.jar" />
        </fileset>
    </copy>

</target>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM