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模式时也遇到了很多问题……对不起,但我特别询问了本地代码库。我想你根本没有读过这个问题。