无法找到或加载主类

时间:2011-10-04 11:50:11

标签: java windows

我有Windows 7,安装了jdk1.7.0及其支持的jre7 我的问题是编译部分工作正常,但在运行Java程序时我得到这个错误说:

  

“无法找到或加载主类”

我将所有程序存储在javalab文件夹中。我已经设定了它的路径。程序如下所示:

C:\Users\user>cd\

C:\>cd javalab

C:\javalab>autoexec.bat

C:\javalab>set path=C:\Program Files\Java\jdk1.7.0\bin

C:\javalab>javac p1.java

C:\javalab>java p1
Error: Could not find or load main class p1

C:\javalab> 

16 个答案:

答案 0 :(得分:28)

我的第一个java程序遇到了类似的问题。

我发出了这个命令

java HelloWorld.class

导致同样的错误。

原来你需要排除.class

java HelloWorld

答案 1 :(得分:12)

尝试:

java -cp . p1

当我遇到同样的问题时,这对我有用,使用Fedora(linux)

答案 2 :(得分:9)

编译和执行java文件的简单方法。(HelloWorld.java不包含任何包)

set path="C:\Program Files (x86)\Java\jdk1.7.0_45\bin"
javac "HelloWorld.java"
java -cp . HelloWorld
pause

答案 3 :(得分:6)

javac应该知道在哪里搜索课程。试试这个:

javac -cp . p1.java

您不需要指定classpath。你确定文件p1.java存在吗?

答案 4 :(得分:4)

我有几乎相同的问题,但有以下变化:

  1. 我已经将一个即用型maven项目从PC1(项目在那里完美地工作)导入Eclipse IDE到另一台PC2
  2. 当试图在PC 2上运行项目时遇到了同样的错误“无法找到或加载主类”
  3. 我检查了PATH变量(在我的情况下它有很多值)并添加了JAVA_HOME变量(在我的例子中是JAVA_HOME = C:\ Program Files \ Java \ jdk1.7.0_03) 重新启动Ecplise后,它仍然无法正常工作
  4. 我试图在PC2上运行简单的HelloWorld.java(在另一个项目中) - 它有效
  5. 所以我已经将HelloWorld类添加到导入的最近项目中,并在那里执行 - 呵呵 - 我项目中的主要类也开始正常运行。
  6. 这是非常奇怪的行为,我无法完全理解它。 希望它会对某人有所帮助。太

答案 5 :(得分:3)

我猜您在p1.java

中有不同的班级名称

答案 6 :(得分:3)

首先检查您的班级名称。根据您的批处理文件说明,它应该是p1。然后检查该类的包,如果它在任何包中,请指定何时运行。

如果包是x.y

java x.y.p1

答案 7 :(得分:3)

经过多次故障排除后,这是我工作的env路径变量

CLASSPATH

。; C:\ Program Files(x86)\ Java \ jre7 \ lib \ ext \ QTJava.zip; C:\ Program Files(x86)\ Java \ jdk1.6.0_27 \ bin

PATH< ---有时这条道路填满了太多的路径,你无法添加路径(这是我的情况!)

bunchofpaths; C:\ Program Files(x86)\ Java \ jdk1.6.0_27 \ bin

此外,当您尝试使用cmd执行文件时...请确保您在本地目录中作为您尝试执行的文件(您已执行此操作。)

对于仍有这个问题的人来说,只是一个小清单。

答案 8 :(得分:2)

我遇到过类似的问题。如果您使用Eclipse,则需要转到您拥有src /文件夹的文件夹...如果您使用了包 - 那么您可以使用

javac -cp . packageName/className

这意味着如果您有一个名为def的包和名为TextFrame.java的主类,那么您将编写

javac -cp . def/TextFrame

省略尾随.java扩展名,然后使用

运行它
java def/TextFrame 

如果你有参数,那么你需要为它提供与你的程序相对应的参数。 我希望这能有所帮助。

答案 9 :(得分:1)

首先,将您的文件*.class(例如Hello.class)放入1个文件夹(例如C:\java)。然后尝试命令并键入cd /d C:\java。现在你可以输入“java Hello”了!

答案 10 :(得分:1)

您可能已经添加了CLASSPATH环境变量!!

使用以下内容以避免在-cp .

中进一步使用java -cp . CLASSFILE

添加。到系统属性中的CLASSPATH->环境变量或cmd

set CLASSPATH=%CLASSPATH%;.;

答案 11 :(得分:1)

我在Eclipse中遇到了类似的问题。每当我点击“运行”按钮时,它都会给我一条消息:“错误:无法找到或加载主类”。但是当我右键单击项目资源管理器中的java文件和Run As Java配置时,它完美地运行。

我认为这是因为它默认尝试在导致问题的其他配置中运行它。

希望这个答案有所帮助。

答案 12 :(得分:1)

如果要使用命令行编译单个.java文件,请删除 从代码中最顶层的包部分,再次编译,它将起作用。

这对我有用。

答案 13 :(得分:0)

有时可能导致问题的原因与主类无关。我不得不以困难的方式找到它,它是我移动的引用库,它给了我:

  

无法找到或加载主类xxx Linux

我只是删除了该引用并再次添加,它再次正常工作。

答案 14 :(得分:0)

我有

  

':'

在我的项目名称中,例如'HKUSTx:part-2' 重命名'HKUSTx-part-2'为我工作

答案 15 :(得分:-2)

您可以使用免费下载的NetBeans IDE并使用“开源”。您甚至可以在此IDE中执行其他编程语言。最新的支持HTML5。这使您的编程更容易。如果您不熟悉它,请选择一个集成了NetBeans的书籍,如Sams Teach Yourself Java in 24 Hours