首页 > 其他分享 >tomcat下jsp嵌入applet找不着类的解决方案

tomcat下jsp嵌入applet找不着类的解决方案

时间:2022-10-21 13:04:47浏览次数:47  
标签:java tomcat Unknown applet Source MyApplet jsp class

tomcat下jsp嵌入applet找不着类的解决方案
背景:eclipse + tomcat + webProject
问题:webProject首页中使用了applet嵌入,结果提示applet类无法查找
解决方案:在应用程序根目录下新建 applet 文件夹,将编译好的 applet.class 文件考到该文件夹下。详细情况:
1、新建项目 MyApplet, index.jsp 源码:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>HelloWorld! Applet</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
-->
</head>

<body>
This is my JSP page. <br>
<applet code="com.defonds.applet.HelloApplet.class" width=200 height=100 ></applet>
</body>
</html>

2、新建 applet 类 HelloApplet 源码:
package com.defonds.applet;

import java.applet.Applet;
import java.awt.Graphics;

public class HelloApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello,Defonds!", 5, 35);
}
}

3、将 MyApplet 部署到 tomcat 容器下。启动 tomcat,访问 MyApplet。页面提示错误信息如下:
载入:找不到类 com.defonds.applet.HelloApplet.class。
java.lang.ClassNotFoundException: com.defonds.applet.HelloApplet.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed:http://localhost:9999/MyApplet/com/defonds/applet/HelloApplet/class.class
at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 7 more
异常:java.lang.ClassNotFoundException: com.defonds.applet.HelloApplet.class 分析:applet 的 class 文件最好不要放在 web-inf 目录下,因为这是个特殊目录,所以 ​​http://localhost:9999/MyApplet/​​​ 不能找到 com.defonds.applet.HelloApplet.class 这个文件。可以在 /webapps/MyApplet/ 下新建一个文件夹,将 applet 的 class 文件放在里面,在重新设置 codebase 属性。
这样,新的目录结构如下:
测试用的 jsp /webapps/MyApplet/index.jsp
jsp 中插入的applet class /webapps/MyApplet/applet/com/defonds/applet/HelloApplet.class
URL
​​​http://localhost:9999/MyApplet/index.jsp​​​
新的 index.jsp 源码如下:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>HelloWorld! Applet</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
-->
</head>

<body>
This is my JSP page. <br>
<applet code="com.defonds.applet.HelloApplet.class" width=200 height=100 codebase="/MyApplet/applet/"></applet>
</body>
</html>
redeploy 一下 tomcat,重新访问 MyApplet 项目,发现 applet 已经成功嵌入。

标签:java,tomcat,Unknown,applet,Source,MyApplet,jsp,class
From: https://blog.51cto.com/defonds/5782397

相关文章

  • 使用Tomcat-5.5.20配置数据库连接池详细介绍
    本文旨在给程序开发人员提供一个比较具体的Tomcat连接池参考方案,为了提高文章的可读性,文章前端引用了一位前辈的话,如果构成误解,请多多谅解,本文不是从商业考虑的。有问题请联......
  • 服务器性能调优——Tomcat 数据库连接池配置,数据库连接池
    前言:关于并发访问,针对不同的项目,有不同的考虑。如果是商用的项目,那么并发是一定要支持的,同时考虑多少用户同时在线访问。有的数据访问量是百万或者千万级的,那一定要支持并发......
  • 遇到的jstl标签库与tomcat 10服务器相关问题
    在写项目的时候,JSP页面引用核心标签库语句<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>运行后报错在tomcat10使用jstl的时候产生如下错误:HTTP状态......
  • JSP入门
    JSP入门JSP(全称JavaServerPages)是由SunMicrosystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的We......
  • Tomcat&Servlet笔记
    今日内容1.web相关概念回顾2.web服务器软件:Tomcat3.Servlet入门学习web相关概念回顾1.软件架构 1.C/S:客户端/服务器端 2.B/S:浏览器/服务器端2.资源分类 ......
  • 怎么从html页面变成jsp页面
    修改html页面到jsp页面也就是从静态页面到动态页面.第一是:修改页面的编码<%@pagecontentType="text/html;charset=UTF-8"language="java"%>第二是加上base标签,这......
  • tomcat中catalina.out按照时间分割(用crontab进行分割)
    具体操作log_control.sh脚本内容(最好是在服务器上vilog_control.sh进行创建文件)#!/bin/bashCUR_PWD="/root/apache-tomcat-8.5.42/logs/catalina_out_bak"NEWLOG=/ca......
  • jsp使用WebUploader做大文件的分块和断点续传
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。这次项目的需求:支持大文件的上传和续传,要求续传支持......
  • Tomcat报错,显示8080端口被占用,解决方法
    1.打开(电脑按住Win+R键)cmd命令,然后敲netstat-ano|findstr8080 2.在资源管理器(Ctrl+alt+delete键)中找到PID码为25528的进程,结束进程 ......
  • 【学习笔记】JSP基础语法和指令
    JSP基础语法和指令写jsp代码之前,需要导入四个包Servlet依赖JSP依赖JSP表达式依赖standard标签库 基础语法jsp表达式语法:<%=xxxxxxx%>xxxxxxx为j......