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

MaX*_*Xal 11 java firefox applet

我使用firefox版本> 3.5(3.5.,3.6.,4.*),我尝试正确指定archivecodebase属性,但它不起作用.我的applet的主要类位于archive和运行时加载的一些必要的类位于codebase.如果我只指定了archive那么applet被加载但是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>
Run Code Online (Sandbox Code Playgroud)

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

Moc*_*Tim 22

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

archivecodebasecodebase

您可以在使用Applet标记部署教程中找到更多详细信息.

我建议以下解决方案:

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

<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>
Run Code Online (Sandbox Code Playgroud)