code属性在applet中怎么设主类_Java小程序入口声明:操作

作者:袖梨 2026-06-28
code属性指定Applet类的字节码文件名(不含.class后缀),须继承java.applet.Applet或javax.swing.JApplet,路径用斜杠分隔包名,如com/example/MyApplet;不支持点号或.class后缀,且仅适用于Java 8及以前版本。

code 属性不是用来“设主类”的,它指定的是 Applet 类的字节码文件名(不含 .class 后缀),且该类必须继承自 java.applet.Appletjavax.swing.JApplet。Java 小程序(Applet)没有传统意义上的“主类入口”概念,它的启动由浏览器或 appletviewer 通过反射调用 init()start() 等生命周期方法完成。

code 属性怎么写才合法

值必须是相对于 codebase(或 HTML 文件所在路径)的类文件路径,不带包路径扩展时默认在根包下;含包时需用斜杠分隔,且不能加 .class

  • <applet code="MyApplet.class"> ❌ 错误:多了 .class
  • <applet code="MyApplet"> ✅ 正确:类名即 MyApplet,位于默认包
  • <applet code="com/example/MyApplet"> ✅ 正确:包路径用斜杠,对应 com.example.MyApplet
  • <applet code="com.example.MyApplet"> ❌ 错误:不能用点号,JVM 加载器认斜杠

为什么设置了 code 还报 ClassNotFound

常见原因不是写错类名,而是类路径没对齐:

  • 未设置 codebase,而 .class 文件不在 HTML 同目录 —— 浏览器会按相对路径找,找不到就挂
  • 类打了 jar 包但没用 archive 属性声明:<applet code="MyApplet" archive="myapplet.jar">
  • 编译时用了 -d 输出到包结构目录,但 HTML 中 code 没同步改用斜杠路径
  • 使用了模块化(Java 9+)或新版本 JDK —— Applet 已被彻底移除,任何 code 都无效

替代方案:appletviewer 调试时怎么指定入口

appletviewer 不看 HTML 的 code,它直接加载 HTML 文件并解析其中的 <applet> 标签。但你可以绕过 HTML,用命令行强制指定:

立即学习“Java免费学习笔记(深入)”;

appletviewer -J-Djava.security.policy=my.policy MyApplet.html

真正起作用的仍是 HTML 里的 codecodebase。如果想快速验证某个类是否能被加载,可临时写个最小 HTML:

<html><body><applet code="MyApplet" width="300" height="200"></applet></body></html>

确保 MyApplet.class 和该 HTML 在同一目录,且类定义为:

public class MyApplet extends java.applet.Applet {    public void init() { /* 必须有 */ }}

Applet 是已废弃技术,现代浏览器完全不支持,code 属性只在遗留系统维护或教学演示中还有意义;实际部署时最容易忽略的是 JDK 版本兼容性——Java 8 是最后一个完整支持 Applet 的版本,Java 9 开始移除 java.applet 包,后续版本连编译都失败。

相关文章

精彩推荐