制作Java包时出现java.lang.NoClassDefFoundError

标签 java package

我并不是一个完全的 Java 初学者,但我不知道这里发生了什么。当我尝试编译以下代码时:

package controls;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class RButton  {
    public RButton() {

    }
}

我收到以下错误:

java.lang.NoClassDefFoundError: RButton (wrong name: controls/RButton)

RButton.java 文件位于目录“项目文件夹\ribbon\controls\”中。在 Ribbon 文件夹中,我已经能够成功地将 packageribbon; 放在源文件的顶部。我不明白我在这里做错了什么。有什么帮助吗?

编辑:问题出在我与 Sublime Text for Java 源文件结合使用的批处理文件上。 JCreator编译运行没有问题。谢谢您的帮助。不过!

最佳答案

位于 controls 文件夹中的类的包名称应为 ribbon.controls。文件夹结构通过包命名和层次结构进行 1 对 1 匹配。

因此,在 ribbon 文件夹中,放置packageribbon。在ribbon/controls文件夹中,放置packageribbon.controls。在ribbon/controls/foo文件夹中,您使用packageribbon.controls.foo

关于制作Java包时出现java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155868/

相关文章:

go - 为什么 "go run"命令在主包中找不到第二个文件?

java - 我的 Discord 机器人有一个没有错误的 Java 代码。但我的机器人仍然离线

visual-studio-2010 - 在 Visual Studio 2010 上手动安装 ".nupkg"包

java - 如何只生成一个包的javadoc

java - x使用文件路径字符串作为参数来初始化对象是否是错误的编码做法?

python - 如何在 Windows 上的 Atom 中安装 flake8

windows-installer - NSIS 可以用来打包 MSI 安装程序吗?

java - 实时绘制图表,随着时间的推移向后移动点

java - 如何保存位图的正确旋转

java - 你有什么替代注释的方法?