【问题标题】:ClassNotFoundException in JavaJava 中的 ClassNotFoundException
【发布时间】:2023-03-25 09:35:05
【问题描述】:

我有一个奇怪而令人沮丧的问题。我将所有 .class 文件加载到一个 JAR 文件中,并将其放在我的本地 Web 服务器上。问题是当我用我的 JAR 导航到页面时,我得到了一个很大的 ClassNotFoundExeption。我 100% 确定这个类文件在我的 JAR 中。我也知道 JAR 文件与我的 XHTML 文件位于同一目录中

这里是 XHTML 源代码

<html>
    <head>
    </head>
    <body bgcolor="000000">
        <center>
            <applet
                archive   = "program.jar"
                code    = "inigui4.class"
                width   = "500"
                height  = "300"
            >

            <param name="cache_option" value="no"> 
            </applet>
        </center>
    </body>
</html>

很奇怪!

由于某种原因,当我创建一个 hello world 小程序时,我遇到了同样的问题(可能是我的 LightTPD 服务器吗?

Java 源码如下

import java.awt.*;
import java.applet.*;

public class inigui4 extends Applet {

    public void init() {
    }

    public void paint(Graphics g) {

        g.drawString("Welcome to Java!!", 50, 60 );

    }
}

甚至陌生人。

现在我无法在网络上加载任何小程序,因为我收到了这个错误。我需要在早上联系 Oracle。

【问题讨论】:

  • 请发布您遇到的异常的完整堆栈跟踪。问题不在于找不到 JAR 文件本身,而在于 JAR 中缺少一个类...
  • 我怎么知道哪个文件丢失了?
  • 堆栈跟踪告诉你。里面有 ClassNotFoundException 的长篇大论。只需将其复制并粘贴到问题中
  • 对不起,如果我听起来很愚蠢,但我在哪里可以找到乱码?我只是点击小程序错误窗口并获取 ClassNotFoundExeption inigui4.class
  • 发布。整个字符串,使其显示在屏幕上。

标签: java html jar


【解决方案1】:

这可能是由多种原因引起的,但最可能的原因是您没有指定您正在使用的类的包。看看这个post的答案。

【讨论】:

    【解决方案2】:

    如果你使用包,你必须在 inigui4.class 前面加上its relative path into the jar

    【讨论】:

    • 抱歉这个愚蠢的问题,但是我怎样才能对异常进行堆栈跟踪...我从来没有真正学会如何运行堆栈跟踪
    【解决方案3】:

    我认为问题出在这里:

            <applet
                archive   = "program.jar"
                code    = "inigui4.class"
                width   = "500"
                height  = "300"
            >
    

    在这里,您指定 inigui4.class - 但在您的 Java 代码中:

    public class inigui_rb extends Applet {
       ...
    }
    

    我是 inigui_rb。试试:

             <applet
                archive   = "program.jar"
                code    = "inigui_rb.class"
                width   = "500"
                height  = "300"
            >
    

    ClassNotFoundException 应该消失。

    编码时也请遵守Java coding conventions!在这种情况下:

    • 类名以大写开头!
    • ClassNamesDoNotContainUnderscoresInsteadTheyAreCamelCased!

    【讨论】:

    • 不是,这是我在构建hello world程序时更改了类名的新程序
    • 好的,那么请更新问题以保持连贯性,因为这样会误导。
    猜你喜欢
    • 2016-10-05
    • 2021-08-17
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2015-06-22
    • 2015-12-20
    • 2011-04-29
    相关资源
    最近更新 更多