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

Java JNLP与本地代码库-如何更新?,java,jnlp,java-web-start,Java,Jnlp,Java Web Start,这样指定代码库是合法的: <jnlp spec="6.0+" codebase="file:/c:/MyApp/" href="myapp.jnlp"> 使用JWS导入时,它会创建桌面快捷方式,并且应用程序正在工作 然而,有一点与远程代码库非常不同。当我在应用程序运行时更新这些文件时,它基本上停止工作,充斥着ClassNotFoundExceptions。JWS似乎没有复制JAR,或者在更新JAR时立即复制JAR,以某种方式覆盖了正在运行的进程所使用的JAR 我

这样指定代码库是合法的:

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

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

然而,有一点与远程代码库非常不同。当我在应用程序运行时更新这些文件时,它基本上停止工作,充斥着
ClassNotFoundExceptions
。JWS似乎没有复制JAR,或者在更新JAR时立即复制JAR,以某种方式覆盖了正在运行的进程所使用的JAR

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


编辑:我还没有找到一种方法来做这件事,所以决定用自制的替代品。在这个过程中,我发现了几个bug,并做了一些观察,我在上一节总结了这些观察结果。在此处发布,以防对某人有任何用处。

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

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


而且,您的jar文件应该放在您的\u webapp\u root\u目录/jars中。对于测试,您可以在浏览器中输入一个url:,如果您可以下载xxxx.jar文件,它可以工作。

要使应用程序自动更新,您应该使用
标记。

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

如果您愿意,您的应用程序也可以脱机运行使用

此外,为了授予所有安全权限,您需要将标签添加到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>   


您试图用本地代码库解决什么问题?这不是重点,但:依赖缓慢而脆弱的基于web的更新,并利用我们现有的系统抽取各种文件、安装、更新等来选择计算机。“脆弱的基于web的更新”。只要确保更新了一个文件,它就会得到一个新的URL并相应地更新JNLP文件。然而,当我记得在过去的日子里,我们在使用JWS和on/offline模式时也遇到了很多问题……对不起,但我特别询问了本地代码库。我想你根本没有读过这个问题。