Java 未针对不同参数更新JNLP文件
我在使用JNLP文件时遇到了几个问题。我试图禁止Java缓存JNLP文件,因为每次运行它时,我都会向它传递不同的Java 未针对不同参数更新JNLP文件,java,java-web-start,jnlp,Java,Java Web Start,Jnlp,我在使用JNLP文件时遇到了几个问题。我试图禁止Java缓存JNLP文件,因为每次运行它时,我都会向它传递不同的。。。然而,我似乎无法强迫它使用进行自我更新。我还尝试在http响应头中设置上次修改的属性,但也没有成功 jar保持不变,因此我不能真正使用version属性强制它更新 正确的方法是什么: 禁用JNLP文件缓存 强制它始终更新JNLP文件 每次启动JNLP时正确地传递不同的参数 这是我的JNLP文件,请注意,在从web浏览器启动时可能会有所不同,JNLP文件是从web动态生成的: &l
。。。然而,我似乎无法强迫它使用
进行自我更新。我还尝试在http响应头中设置上次修改的属性,但也没有成功
jar保持不变,因此我不能真正使用version
属性强制它更新
正确的方法是什么:
禁用JNLP文件缓存
强制它始终更新JNLP文件
每次启动JNLP时正确地传递不同的参数
这是我的JNLP文件,请注意,
在从web浏览器启动时可能会有所不同,JNLP文件是从web动态生成的:
<jnlp spec="1.0+" codebase="https://blah.blah.com/jnlp/jar/*/">
<information>
<title>JNLP Launcher</title>
<vendor>Blah</vendor>
<homepage href="http://www.blah.com"/>
<description>JNLP Launcher</description>
</information>
<security>
<all-permissions/>
</security>
<update check="always" policy="always"/>
<resources>
<java href="http://java.sun.com/products/autodl/j2se" version="1.7+"/>
<jar href="https://blah.blah.com/jnlp/jar/LauncherSigned.jar" download="eager" main="true"/>
</resources>
<application-desc main-class="com.blah.jnlp.Launcher">
<argument>{"javawebstart" : "isfullofshit"}</argument>
</application-desc>
</jnlp>
JNLP发射器
废话
JNLP发射器
{“javawebstart”:“isfullofshit”}
Java web start从不在客户端计算机上更新JNLP文件内容。但是,如果任何资源被更新,它的性能就会完美无瑕
例如:
若您对服务器上托管的jnlp文件中的helper.jar资源进行了注释。web start不会将此更改反映到在您更改服务器的.jnlp之前已下载jnlp文件的任何客户端
<!--jar href="helper.jar"/-->
方法二(简单):
1.简洁明了。引入一个入口点类,比如“mainclasargument.java”
2.将.jnlp文件作为主类指向该类
3.启动主类的实例,从该类将硬编码参数传递给主类
因此,使用这种方法,您需要在每次更改参数时重新编译该类
这将欺骗JavaWebStart,使其立即将您的更改反映到客户端
希望这有帮助:)
注意:在您提出的问题中,您要求禁用java web start cache,这不会有帮助,因为。jnlp文件未被缓存,它存储在客户端计算机上。JavaWebStart文档从未提到它在客户端更新了.jnlp文件。根据WebStart,更新仅限于资源更新,而没有其他更新。我们必须想出自己的策略来更新client.jnlp文件
String[] jarSequence= {"demo.jnlp"};
String codebase = "http://localhost:8818/javawsGame/";
DownloadService ds;
try {
ds =
(DownloadService)ServiceManager.lookup("javax.jnlp.DownloadService");
if (ds != null) {
URL url =
new URL(codebase + jarSequence[0]);
boolean cached = ds.isResourceCached(url, null);
if (cached) {
ds.removeResource(url, null);
}
//setMessage(msgSequence[0]);
//setLoadingResource(jarSequence[0]);
DownloadServiceListener dsl = ds.getDefaultProgressWindow();
ds.loadResource(url, null, dsl);
}
//take a breath
Thread.currentThread().sleep(3000);
Process exec = Runtime.getRuntime().exec("javaws path/to/your/demo.jnlp");
exec.waitFor();
System.exit(0);
} catch (Exception e) {
System.out.println("Exception: "+e);
}