【问题标题】:How to resolve this error Caused by: java.lang.ClassNotFoundException如何解决此错误原因:java.lang.ClassNotFoundException
【发布时间】:2025-12-14 10:35:01
【问题描述】:

我编写了一个控制台应用程序helloworld.java,然后运行javac helloworld.java,然后运行java helloworld。这很好用。

然后我创建了一个包com.abc.project 并将helloworld.java 移到其中(包导入语句正确生成,即package com.abc.project;)。然后我跑了javac helloworld.java 这也很好,并正确生成了类。

但是,当我从控制台运行 java com.abc.project.helloworld 时,它抛出了“找不到类”错误。

请谁能告诉我是什么问题?

【问题讨论】:

  • “hellowrold.java”、“helloword.java”?真的吗?有道理该死!
  • 您需要在类路径中包含所有文件,并确保包结构与文件所在的目录匹配。
  • 你在运行之前设置了类路径吗?
  • I wrote a console application hellowrold.java. I ran javac helloword.java and then java helloworld. This worked fine. 你确定吗? :-)
  • 当您使用命令行 javac 和 java 执行程序时,eclipse 不会出现!如果你从 eclipse 运行它,那么只有 eclipse 会处理它!

标签: java classpath classnotfoundexception


【解决方案1】:

尝试运行

java -cp ABSOLUTE_PATH com.abc.project.helloworld

其中 ABSOLUTE_PATH 是指类文件和包所在的目录。说它是bin 目录,其中生成类文件以及与源文件相同的目录结构

【讨论】:

  • 长期以来,如果您不自己手动提供类路径,当前工作目录会自动在类路径中。如果您替换“。”,我可以接受您的答案是正确的。带有绝对路径。
  • 哦,我知道了。但是,忘记了。谢谢!我已经更新了答案。
  • 好的,但是说“ABSOLUTE_SRC_PATH”仍然令人困惑,这使您看起来好像是指的是包含源文件而不是类文件的目录;)当您指的是绝对路径时,当然不再强制从类路径本身的根目录运行。
  • @Gimby 你是一个非常好的评论者;)改变了它。我的文笔不太好。
  • 那么我要再补充一个抱怨,你必须解释一下 ABSOLUTE_PATH 是什么,否则 c:\windows 或任何其他不相关的文件夹也适用;)
【解决方案2】:

首先请用大写字母命名类,如 HelloWorld.java

如果您在 cmd 中的文件夹 '/myjava' 中并且您的 .java 文件在此文件夹中,则在 cmd 中执行此操作

D:\\myjava\:> javac -d HelloWorld.java

这将为您创建正确的包结构 然后不要从同一个地方去任何地方这样做

D:\\myjava\:>  java com.abc.project.HelloWorld

它应该可以正常工作!

【讨论】:

    最近更新 更多