JNLP与本地代码库 - 如何更新?

时间:2011-11-24 09:04:10

标签: java jnlp java-web-start

指定代码库是合法的:

<jnlp spec="6.0+"
    codebase="file:/c:/MyApp/"
    href="myapp.jnlp">

使用JWS导入时,它会创建桌面快捷方式,并且应用程序正在运行。

但是,有一点与远程代码库有很大不同。当我在应用程序运行时更新这些文件时,它基本上停止了ClassNotFoundExceptions的工作。似乎JWS没有复制jar,或者在更新时立即复制它们,因为它们会以某种方式覆盖正在运行的进程使用的jar。

如何让它像文件是远程一样工作?也就是说,将文件复制到缓存中,并仅在启动时检查更新。

编辑:我还没有办法做到这一点,并决定购买自制软件。一路走来,我发现了几个错误,并在http://squirrel.pl/blog/2011/11/24/java-web-start-bugs-offline-edition/总结了一些观察结果。将它发布在这里以防它可能对某人有用。

2 个答案:

答案 0 :(得分:0)

为了使您的应用程序可自动更新,您应使用<update>标记。

<update check="always" policy="always"/>

如果您愿意,您的应用程序可能会在离线状态下运行<offline-allowed/> 另外,为了提供所有安全权限,您需要添加<security>标记。
将以下标记添加到JNLP文件中。

    <information>
        <offline-allowed/> 
    </information>

    <security>
        <all-permissions/>
    </security>

    <update check="always" policy="always"/>

    <resources>
        <jar href="your-signed.jar" main="false" download="eager"/>
    </resources>   

答案 1 :(得分:-4)

在我们的应用程序中,代码库是:

<jnlp codebase="http://xxxx.xxx.xxx/jars"> 

并且,您的jar文件应放在your_webapp_root_directory / jars中。为了进行测试,您可以在浏览器中输入一个网址:http://xxxx.xxx.xxx/jars/xxxx.jar,如果您可以下载xxxx.jar文件,则可以使用。