You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Applet报ClassNotFoundException,如何设置正确的codebase相对路径?

解决Applet的ClassNotFoundException问题

嘿,这个问题其实踩了一个Java Web里很常见的坑——WEB-INF目录是服务器端受保护的私有目录,浏览器根本无法直接访问里面的资源,这才是你一直报错的核心原因,不是单纯的路径写错了!

先理清核心问题

你把Applet的class文件放在WEB-INF/classes里,这个目录是给服务器端代码(比如Servlet、后端业务类)用的,浏览器发起的请求会被服务器拦截,根本下载不到这里的class文件,自然会抛出ClassNotFoundException。

正确的解决步骤

1. 调整class文件的存放位置

在web根目录下新建一个公开可访问的目录(比如叫applets),把你的class文件移过去,最终的文件夹结构变成:

web
├─ View
│  └─ Gadgets.jsp
├─ applets
│  └─ Gadgets
│     └─ calculator.class
└─ WEB-INF
   └─ classes

2. 修改Gadgets.jsp里的applet标签

把代码改成下面这样:

<applet codebase="../applets" code="Gadgets.calculator" width="200" height="280">
    If your browser was Java-enabled, a Calculator would appear here.
</applet>

这里有两个关键调整:

  • codebase="../applets":因为Gadgets.jsp在web/View/目录下,../会回到web根目录,再指向我们新建的applets公开目录,浏览器能正常访问这里的资源。
  • code="Gadgets.calculator":要用点分隔的全限定类名(而不是斜杠),这是Java类的标准写法,Applet加载器会根据这个规则找到对应的class文件。

额外提醒

以后别把需要浏览器下载的前端资源(包括Applet、JS、CSS、图片等)放到WEB-INF目录里,这个目录是服务器的私有领地,只给后端代码用。

内容的提问来源于stack exchange,提问作者MBJH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:49:25