applet 找不到类。。

爱花的石头 2010-09-21 01:44:55
今天刚学applet小程序。。试用一下下。。

我写了一个类。。继承了java.applet.Applet类。。。。。然后添加了一些组件。。没什么 其他操作。。
然后部署到tomcat6.0中测试一下。。看有没有界面。。。在IE中。。试了下。结果java控制台出现了下面这个错:


Java Plug-in 1.6.0_02
使用 JRE 版本 1.6.0_02 Java HotSpot(TM) Client VM
用户主目录 = C:\Documents and Settings\Administrator


----------------------------------------------------
c: 清除控制台窗口
f: 终结在结束队列上的对象
g: 垃圾收集
h: 显示此帮助消息
l: 转储类载入程序列表
m: 打印内存使用
o: 触发日志记录
p: 重新载入代理配置
q: 隐藏控制台
r: 重新载入策略配置
s: 转储系统和部署属性
t: 转储线程列表
v: 转储线程堆栈
x: 清除类载入程序高速缓存
0-5: 设置跟踪级别为<n>
----------------------------------------------------

载入:找不到类 TalkClient.class。
java.lang.ClassNotFoundException: TalkClient.class
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed.
at sun.applet.AppletClassLoader.getBytes(Unknown Source)
at sun.applet.AppletClassLoader.access$100(Unknown Source)
at sun.applet.AppletClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 10 more

但是我的目录是:
F:\学习软件\Tomcat 6.0\webapps\TalkServer\jsp\index.jsp
F:\学习软件\Tomcat 6.0\webapps\TalkServer\jsp\TestClient.class


页面就一句代码: <applet code="TalkClient.class" width="150" height="100"></applet>


看这异常。。显然是找不到我的类。。。但是我己经把编译好的.class文件放到了和页面.jsp文件在一起啊。。怎么还找不到呢??请各位多多指教。。小弟刚学这个。。不太懂。。

...全文
689 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱花的石头 2010-09-22
  • 打赏
  • 举报
回复
首先谢谢各位的回答,给了我提示,从加载路径着手。我找了一下资料找到了一个解决方法 :

有第一种情况:如果applet类没有写在任何包里。。只要将页面与编译后的.class文件放在一起然后在页面上写这个

<jsp:plugin code="cn.server.client.TalkClient.class" codebase="" type="applet"></jsp:plugin>

这种情况没试过,不知道可不可以。

写上这个:<applet code="cn.server.client.TalkClient.class"></applet> 这个试过可以用

第二种 情况:
就是applet类写在包里。。。面、。这个要新建一个目录与web-inf平级。。因为编译后的所有类。在这里面。。但是web-inf这个比较特殊。。资料说只能在页面重定向的时候会访问,所以初始化的时候加载不了.class文件 。。报classNotFound异常。。。只能先建一个与web-inf平级的目录(假如是appletClass文件 夹)。。把web-inf里面编译好的所有东东都 Copy 到里面去。。然后页面代码:

写: <jsp:plugin code="cn.server.client.TalkClient.class" codebase="/项目名/appletClass/" type="applet"></jsp:plugin>

也就是修改了一下。。applet类的加载路径。。运行一下。。加载成功。。界面出来了。

soseasky 2010-09-21
  • 打赏
  • 举报
回复
<APPLET CODE = "AppletIO.class" JAVA_CODEBASE = "applet/" ARCHIVE = "kett.jar" WIDTH = 1 HEIGHT = 1 NAME = "ETL">
</APPLET>
我吧 我的给你看看吧 applet文件夹 和 当前JSP 页面在相同路径层
不过我是将AppletIO.class 放入kett.jar包里的 我要用游览器读写本地文件的
wwwtyb 2010-09-21
  • 打赏
  • 举报
回复
<applet code=stu.jink.aistools.applet.Uci2Svm.class width="200" height="200" codebase="/WEB-INF/classes" >
</applet>


由上面可以看到,出错的applet调用和正常的applet调用差别在于codebase设置与否!此处加入的codebase="/WEB-INF/classes"确定了applet程序调用的初始位置。但,并不是所有的应用都是要写为:"/WEB-INF/classes"。这个路径要根据自己网站的结构设计而确定。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧