如何在Java applet中正确指定代码库和存档?

时间:2011-05-10 08:10:22

标签: java firefox applet

我使用的是firefox版本> 3.5(3.5。,3.6。,4。*)我尝试正确指定archivecodebase属性,但它不起作用。我的applet主要类位于archive,并且在运行时加载的一些必要类位于codebase。如果我仅指定archive,则会加载小程序,但缺少来自codebase的类。如果我指定archivecodebase,则无法加载小程序。看起来applet尝试从codebase文件夹加载主类,而不会查看archive文件。

<html>    
<body>
<applet width=600 height=300 code="MyClass.class" 
  type="application/x-java-applet;jpi-version=6" 
  archive="http://myurl.com/archive/myjar.jar" 
  codebase="http://myurl.com/classes">
    no applet
</applet>
</body>    
</html>

主类位于http://myurl.com/archive/myjar.jar,运行时类位于http://myurl.com/classes

1 个答案:

答案 0 :(得分:22)

属性codebase指定applet的基本URL - 包含applet代码的目录。在archive属性中搜索jar文件时使用它,以便archive属性中的所有jar都相对于codebase进行搜索。
所以。当您同时使用archive="http://myurl.com/archive/myjar.jar"codebase="http://myurl.com/classes"时,这意味着:在http://myurl.com/archive/myjar.jar文件夹中找到http://myurl.com/classes
即完整搜索路径为http://myurl.com/classes/http://myurl.com/archive/myjar.jar。当然无法找到!
此外,如果没有archive属性,则找不到codebase属性中未指定jar文件的类。即如果没有codebase,则无法在http://myurl.com/classes文件夹中找到您的课程。

您可以在Deploying With the Applet Tag教程中找到更多详细信息。

我建议使用以下解决方案

  1. myjar.jar放入http://myurl.com/classes文件夹;
  2. 假设您的MyClass.class位于默认包中,并且在http://myurl.com/archive/myjar.jar中,以下代码应该有效:

  3. <html>    
    <body>
    <applet width=600 height=300 code="MyClass" 
      type="application/x-java-applet;jpi-version=6" 
      archive="myjar.jar" 
      codebase="http://myurl.com/classes">
       no applet
    </applet>
    </body>    
    </html>