小程序 CLASS_NOT_FOUND_EXCEPTION

Applet CLASS_NOT_FOUND_EXCEPTION

让我们创建小程序并将其添加到 jsp 页面, 使用的环境是 STS Spring Tool Suite

新建 -> 动态 Web 项目 -> 名称="WEBtest"

Java 资源 -> src-> new packeg="firstPack.secondPack.mainPack.appletPack" -> new class="MyApplet"

package firstPack.secondPack.mainPack.appletPack;
import java.awt.Color;

import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class MyApplet extends JApplet {
    @Override
    public void init() {
        super.init();
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    populateGUI();
                }
            });
        } catch (Exception e) {
            System.err.println("createGUI didn't complete successfully");
        }
    }
    void populateGUI(){
        JPanel panel=new JPanel();
        panel.setBackground( Color.LIGHT_GRAY);
        panel.add(new JLabel("QUAQ-QUAQ"));
        add(panel);
        this.revalidate();
    }
}

运行 作为 -> Java 小程序

好的,可以了

web.xml 是自动创建的

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>WEBtest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

所以...

Web 内容 -> 新 jsp="default"

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

    <h6>DUCK</h6>

    <h6>First TRY</h6>

    <applet code="firstPack.secondPack.mainPack.appletPack.MyApplet"></applet>

    <h6>Second TRY</h6>

    <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93">
        <param name="code"
            value="firstPack.secondPack.mainPack.appletPack.MyApplet">
    </object>

    <h6>Third TRY</h6>

    <embed code="firstPack.secondPack.mainPack.appletPack.MyApplet"
        type="application/x-java-applet;version=1.6" />

    <h6>Fourth TRY</h6>

    <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93">
        <param name="code"
            value="firstPack.secondPack.mainPack.appletPack.MyApplet">
        <comment> <embed
            code="firstPack.secondPack.mainPack.appletPack.MyApplet"
            type="application/x-java-applet;version=1.6">
            <noembed> No Java Support. </noembed>
        </embed> </comment>
    </object>


</body>
</html>

现在将我们的项目拖放到 "Server"

服务器默认为STS:"Privotal tc Server Developer Edition v3.1"

启动服务器

http://localhost:8080/WEBtest/

打开浏览器

点击window

点击详情

CLASS_NOT_FOUND_EXCEPTION

这里是一些项目设置

因为从 "src" 到 "WEB-INF/classes" 的所有内容,那么我假设小程序中的 "code" 参数是可以的

尽管如此,我也尝试将 java 文件提取到 JAR 中,并添加 "archive" 参数,但是 CLASS_NOT_FOUND_EXCEPTION

我删除了PC上的所有java版本,然后安装了Java SE Development Kit 8 Update 40 (64 bit),还安装了Java 8 Update 40 (64 bit)

之后,我尝试从 docs.oracle.com 打开一些小程序示例但失败了,因此它要求我安装 Java 8 Update 40 而不是 64 位,所以现在我有两个,但是因为小程序示例工作正常我怀疑这是问题所在并保持原样

在谷歌搜索的第二天结束时,我有点绝望,但让它发挥作用很重要

since everything from "src" go to "WEB-INF/classes" then i assume that "code" parameter in applet is OK

只有服务器可以访问 WEB-INF/classesWEB-INF/lib 路径。如果您尝试在小程序上直接获取(使用浏览器地址栏),您可能会看到 'forbidden' 页面。

小程序应该是public内容,在浏览器输入URL应该可以下载

为了实现这个应该足以修改 "Deployment Assembly" 所以..

第一次尝试

Project -> Property - > Deployment Assembly - > Source ( java resources folder "/src") -> Deploy Path ( change to root directory )

好的,现在可以了

现在将 "src" 文件夹恢复到 "WEB-INF/classes"(用于服务器端)

创建新的源文件夹 "appletSRC",将其 Deployment Assembly 更改为 "root directory" 但由于某种原因它不起作用

如果在项目 属性 中通过推送

更改 "Order and Export" 部分
"appletSRC" -> UP

可以让 applet 工作,但是 "src"(首先在顶部)将不会部署在 "WEB-INF/classes"。

尽管如此 终极解决方案

Project -> Property - > Java Build Path -> Source -> appletSRC -> Output folder -> Edit

设置为 "webapp" 中的 public 文件夹

声明小程序标签时在 "archive" 我们的 public 文件夹中指定

重要完成 "archive" 使用 /slash,并使用 .class 扩展名进行编码,否则如果多次刷新浏览器将出现错误