Java小程序和缓存问题

3

我的一个小程序展示在一个网页上,代码如下:

<applet code="foo.class"></applet>

当我更改服务器中的foo.class文件并访问该页面时,它显示旧版本。如果我清空浏览器和jvm缓存,然后重新加载页面,它将显示当前版本。如何告诉浏览器/jvm这是同一类的另一个版本?

并且,如果我本地访问html文件而没有任何web服务器,即使不刷新缓存,它也始终显示当前版本。我错过了什么吗?

更新:

使用js加载小程序时,生成的html为:

<applet code="abcSynth.class" archive="miglayout-4.0-swing.jar" height="500" width="800"> <param name="cache_option" value="no"><param name="codebase_lookup" value="false">

现在,我在java文档中发现,当主类未与.jar存档一起提供时,例如此示例时,使用codebase_lookup。对于false值,它会抛出ClassNotFoundException,对于true值,它会启动(旧版本)。

代码文件夹包含主类和其他几个.class文件,唯一的.jar是miglayout.jar,但由于Java文档说“通常,小程序使用存储在小程序JAR文件中的所有所需类和资源。” 我想知道我是否在.class/.jar部署方面做错了什么。

已解决:

谢谢,它起作用了!浏览器仍在缓存中保存旧版本,但重新启动后,它会显示当前版本!

我使用的最终代码是:

<object classid="java:myClass.class" 
          type="application/x-java-applet"
          archive="myJar.jar" 
          height="500" width="800" >
<param name="code" value="myClass.class" />
<param name="persistState" value="false" />
<param name="cache_option" value="no"/>
<param name="codebase_lookup" value="true"/></object>

1
  1. "我在网页中展示了一个小程序,代码如下:<applet code="foo.class"></applet>。但是由于该小程序没有指定宽度或高度,你能看到任何东西吗?请先验证一下HTML的有效性(http://validator.w3.org/)。"
  2. 浏览器/JRE会缓存小程序类。通过在Java控制台中键入“c”来清除缓存,然后重新加载页面。
  3. 作为更一般的建议,尽可能在IDE和小程序查看器中测试小程序。推荐使用JWS启动的应用程序,而不是小程序。
- Andrew Thompson
  1. 当然有宽度、高度和存档属性,但它们与问题无关。
  2. 我知道如何清除缓存,但我不能指望最终用户这样做,这就是为什么(3)我谈论浏览器而不是小程序查看器的原因。
- lelloman
@user1527232,我编辑了我的回答,请看一下... - user592704
1个回答

1

有趣的问题...

作为提示,您可以使用cache_option属性,这样您就可以简单地设置不缓存您的小程序,以便...

<html>
<head>
<title>Test Applet</title>
</head>
<body>
Test applet...
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
    var attributes = {code:'Test.class',
                      archive:'aTest.jar',
                      width:10, height:10};
    var parameters = {cache_option:'no'};
    var version = '1.6';
    deployJava.runApplet(attributes, parameters, version);
</script>
</body>
</html>

作为一个额外的提示,尝试使用对象标签代替具有相同参数的applet标签。
<PARAM name="cache_option" value="no">

如果有帮助,请报告


脚本加载了小程序,但仍然是旧版本。我清除了JVM和浏览器缓存,使用JS加载旧应用程序,更改了.class文件并重新加载页面。我正在使用禁用整个缓存的Firefox。 - lelloman
1
值得注意的是,Java不再支持cache_option选项。http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4806282 - RoryB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接