- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经尝试过 Oracle Java Tutorials 中的两个示例。它们都编译得很好,但是在运行时,都出现了这个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: graphics/shapes/Square
at Main.main(Main.java:7)
Caused by: java.lang.ClassNotFoundException: graphics.shapes.Square
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
我认为 Main.java
文件可能位于错误的文件夹中。
这是目录层次结构:
graphics
├ Main.java
├ shapes
| ├ Square.java
| ├ Triangle.java
├ linepoint
| ├ Line.java
| ├ Point.java
├ spaceobjects
| ├ Cube.java
| ├ RectPrism.java
这是Main.java
:
import graphics.shapes.*;
import graphics.linepoint.*
import graphics.spaceobjects.*;
public class Main {
public static void main(String args[]) {
Square s = new Square(2, 3, 15);
Line l = new Line(1, 5, 2, 3);
Cube c = new Cube(13, 32, 22);
}
}
我在这里做错了什么?
更新
将Main
类放入graphics
包中(我向其中添加了packagegraphics;
)后,将类路径设置为“_test”(包含图形的文件夹),编译它,并使用 javagraphics.Main
(从命令行)运行它,它工作了。
更新#2 真的太晚了
我没有使用Eclipse (只是 Notepad++ 和 JDK),上面的更新解决了我的问题。然而,似乎其中许多答案都是针对 Eclipse 和 IntelliJ IDEA ,但它们有相似的概念。
最佳答案
编译代码后,您最终会得到程序中每个类的 .class
文件。这些二进制文件是 Java 解释以执行程序的字节码。 NoClassDefFoundError
表示负责动态加载类的类加载器(在本例中为 java.net.URLClassLoader
)找不到 .class
您尝试使用的类的文件。
如果所需的类不存在,您的代码将无法编译(除非通过反射加载类),因此通常此异常意味着您的类路径不包含所需的类。请记住,类加载器(特别是 java.net.URLClassLoader
)将在类路径中每个条目的文件夹 a/b/c/中查找包 a.b.c 中的类。 NoClassDefFoundError
还可能表明您缺少已编译并尝试使用的 .jar 文件的传递依赖项。
例如,如果您有一个类 com.example.Foo
,编译后您将获得一个类文件 Foo.class
。例如,您的工作目录是 .../project/
。该类文件必须放置在 .../project/com/example
中,并且您可以将类路径设置为 .../project/
。
旁注:我建议利用 Java 和 JVM 语言现有的令人惊叹的工具。现代 IDE(如 Eclipse 和 IntelliJ IDEA)以及构建管理工具(如 Maven 或 Gradle)将帮助您不必担心类路径(尽可能多)并专注于代码!也就是说,this link解释了如何在命令行上执行时设置类路径。
关于java - 我该如何解决 "java.lang.NoClassDefFoundError"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60251027/
在 Tomcat 6/Ubuntu 12.04 上启动 Grails 2.1.0 应用程序时出现以下错误。 Error 500 - Internal Server Error. groovy.lang
在运行 Storm 拓扑时,我收到此错误。拓扑完美运行 5 分钟,没有任何错误,然后失败。我正在使用 Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS as 300 sec i
我有一个 jsp 代码在其中一台机器上运行良好。但是当我复制到另一台机器时,我得到了这个 no such method found 异常。我是 Spring 的新手。有人可以解释我错过了什么吗? 以下
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我的代码在下面给出了一个错误; Exception in thread "main" java.lang.NoSuchMethodError: com/myApp/Client.cypherCBC(L
我正在尝试一个 Restful web 服务示例,所以当我要访问 url 时,我遇到了异常 java.lang.NoSuchMethodError: jersey.repackaged.com.goo
我正在将一个 Spring web 项目转换为一个 Maven 项目,但我收到了这个错误: java.lang.NoSuchMethodError: org.jboss.logging.Logger.
在我的项目中,我有一个像这样的枚举: public enum MyEnum { FIRST(1), SECOND(2); private int value; private MyEnum(int v
我创建了这个简单的示例,用于读取 Linux 正常运行时间: public String getMachineUptime() throws IOException { String[] di
我正在使用 Eclipse,并且正在使用 Java。我的目标是使用 bogoSort 方法对 vector 进行排序在一个 vector (vectorExample)中适应我的 vector 类型,
我正在运行以下查询。它显示一条错误消息。如何解决这个错误? ListrouteList=null; List companyList = session.createS
我有以下模型类: @Entity @Table(name="user_content") @org.hibernate.annotations.NamedQueries({ @org.
我有那个错误。这是我的代码: GmailSettingsService service = new GmailSettingsService(APPLICATION_NAME, DOMAIN_NAME
实际上我在执行我的java程序时遇到了下面提到的错误 Exception in thread "pool-1-thread-1" java.lang.ClassCastException: jav
java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.String 我在以下代码中遇到此异常: Strin
我正在尝试从 linkedhashset 中检索随机元素。下面是我的代码,但它每次都给我异常。 private static void generateRandomUserId(Set userIds
我已经完成了 Android 中的代码: List spinnerArray = new ArrayList(); for (int i = 0; i item = (LinkedTreeMap)
这个问题已经有答案了: Explanation of ClassCastException in Java (12 个回答) 已关闭 6 年前。 我已经编写了 java 到 Json 的代码,同时从页
这个问题在这里已经有了答案: ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn (4 个答案) 关闭 6 年前
我在运行时遇到问题来编译这段代码,这给我一个错误,java.lang.Integer 无法转换为 Java.lang.Double。如果有人帮助我更正此代码,我将非常高兴 double x; pu
我是一名优秀的程序员,十分优秀!