我做了一个应用程序,我会在开始时进行自动更新。阅读stackoverflow许多人建议Java Web启动。 因此,通过Netbeans,我可以启用Web启动配置。它生成了launch.jnpl html,jar文件和lib文件夹。 在程序的主要部分我插入
DownloadService2 service = (DownloadService2)
ServiceManager.lookup("javax.jnlp.DownloadService2");
ResourceSpec spec = new ResourceSpec("http://www.mysite:8080/.*", "1.*", service.JAR);
ResourceSpec results[] = service.getCachedResources(spec);
results = service.getUpdateAvailableResources(spec);
我将dist文件夹中的所有文件上传到网络服务器。现在,如果我用lunch.jnpl启动应用程序,它会启动没有问题。但是当我使用我的jar文件时出现错误:无法找到主要类“我的类”程序退出。
现在,如果我不使用DownloadService2,它可以与Jar文件一起使用。 所以我的问题是: 我如何使用Java Web start来更新我的程序?
例如,如果我发布另一个版本并将其放入codebase url,如果我用jar文件启动程序,它应该下载新版本。
有人可以告诉我,如果我错了什么或误解了Java网站是如何运作的吗?
编辑:我希望程序遵循以下这一行: 1)如果可能的话,与jar共进午餐,检查更新......如果因为离线而无法使用旧的 2)如果在线检查更新,如果文件夹中有可用的下载更新 3)如果更新不可用使用较旧的。 重复1 2 3
答案 0 :(得分:1)
这是现在的两个人,不是吗:
首先,为什么你的主要课程会出现错误?您的jnlp文件是否具有正确的包和声明的主类的名称?它应该是这样的:
<application-desc main-class="package1.package2.MyMainClass" />
其次,更新如何运作。一旦有人访问你的jnlp文件并从中启动你的jar应用程序,那个jar就会在客户端的机器上本地下载。然后,当他第二次运行它时,jnlp协议将首先检查url以查看jar是否已更新。如果是这样,那么它将获得新版本,这就是客户端将运行的版本。如果尚未更新,则先前下载的jar将从本地计算机运行。