【问题标题】:Java applet and cache issueJava小程序和缓存问题
【发布时间】:2012-12-08 22:14:48
【问题描述】:

我在网页中显示了一个小程序

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

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

而且,如果我在没有任何网络服务器的情况下在本地访问 html 文件,即使没有缓存刷新,它也会始终显示当前版本。我错过了什么?

更新:

用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 文档中发现 codebase_lookup 在 .jar 存档未提供主类时使用它,就像这种情况一样。值为 false 时抛出 ClassNotFoundException,值为 true 时开始(旧版本)。 代码文件夹包含主类和其他几个 .class 文件,唯一的 .jar 是 miglayout.jar,但由于 javadocs 说“通常部署小程序,所有需要的类和资源都存储在小程序 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) “我的网页中显示了一个带有&lt;applet code="foo.class"&gt;&lt;/applet&gt; 的小程序” 鉴于小程序没有指定widthheight,我很惊讶您看到任何内容。 Validate the HTML。 2) 浏览器/JRE 缓存小程序类。通过在Java Console 中键入c(?) 来刷新缓存。然后重新加载页面。 3) 作为更一般的建议,尽可能在 IDE 和小程序查看器中测试小程序。首选JWS 启动的应用程序。到一个小程序。
  • 1)当然有width height和archive属性,但是和问题没有关系 2)我知道怎么清除缓存,但是我不能指望最终用户会这样做,这就是为什么 (3)) 我说的是浏览器而不是小程序查看器
  • @user1527232 我编辑了我的答案。请观看...

标签: java caching browser applet


【解决方案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>

作为附加提示,尝试使用object tag 代替具有相同参数的applet 标记:

<PARAM name="cache_option" value="no">

报告是否有帮助

【讨论】:

  • 脚本加载小程序,但它仍然是旧的。我清除了 jvm 和 broser 缓存,用 js 加载旧应用程序,更改了 .class 文件并重新加载了页面。我正在使用 firefox“禁用整个缓存”。
  • 值得注意的是java不再支持cache_option bugs.java.com/bugdatabase/view_bug.do?bug_id=4806282
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2011-04-28
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 2013-05-18
相关资源
最近更新 更多