【问题标题】:Error; Could not find or load main class (Java using Windows CMD)错误;无法找到或加载主类(Java 使用 Windows CMD)
【发布时间】:2014-10-19 00:31:27
【问题描述】:

我正在尝试编译和运行我在 Eclipse 中创建的一些 java 文件。 .java 文件的完整路径是C:\Users\MYNAME\Documents\Java\Introduction\src\tests\Test.javatests 是我在 Eclipse 中创建的包,src 是 Eclipse 在Introduction(即项目名称)下创建的文件夹。

在我的环境变量中,我有以下相关变量:

JAVA_HOMEC:\Program Files (x86)\Java\jdk1.7.0_40\bin

在系统变量下我有以下内容:

CLASSPATH%JAVA_HOME%

我转到我的 cmd 并 cd 进入 tests 目录 (cd C:\Users\MYNAME\Documents\Java\Introduction\src\tests)。然后我使用javac Test.java 编译。这似乎有效,因为我在同一目录下有一个 Test.class 文件。现在我想运行该文件,我输入 java Test 并收到错误消息“找不到或加载主类”。我尝试了各种方法,包括在末尾附加 .class.java,但我一直收到错误消息。我查看了一些答案和文档,如果我 cd 进入:

cd C:\Users\MYNAME\Documents\Java\Introduction\src(即脱包)

然后运行:

java -cp . tests.Test

所以这似乎暂时将类路径设置为当前目录,并从包tests 运行测试。但是,我只想能够输入java Test。我知道这是可能的,因为我以前能够做到,但现在由于某种原因我不能(我一定是在此过程中改变了一些东西......)。

感谢任何帮助。

【问题讨论】:

  • Test.java的post code也是
  • 如果您的类 Test 在测试包中,那么您需要使用 tests.Test 运行它。如果你的类 Test 不在包中,那么你可以在没有包名的情况下运行它。

标签: java cmd classpath


【解决方案1】:

但是,我只想简单地输入java Test

只有在Test 位于默认包中时,它才会起作用——就这么简单。您需要将要启动的类的完全限定名称传递给java 可执行文件。没有办法解决这个问题。

当然,您可以创建自己的 启动器,它会在当前目录中查找类文件,找出这些文件中类的完全限定名称,然后启动java,提供全名并可能指定适当的类路径...但与仅在命令中包含包名相比,这似乎很麻烦。

【讨论】:

  • 那么可以输入java tests.Test吗?我在tests 目录和src 目录中尝试过,但似乎都不起作用。
  • @Keir:我以为你说在 src 目录中确实有效。如果您必须指定类路径,这表明您可能有一个无用的 CLASSPATH 环境变量。
  • 是的,这里的问题是我必须指定类路径才能使其工作。我认为我的环境变量有问题,所以我将它添加到我的问题中 - 我对此并不精通!
  • @Keir:完全摆脱环境变量。
  • 我已经删除了 CLASSPATH 变量(我还有 JAVA_HOME 变量),这似乎无法解决问题。
【解决方案2】:

你可能会犯我犯的同样的错误。因此,请尝试以下操作。

这是我的代码供您参考。

class A{
    public static void main(String args[]) {
        System.out.println("Hello world");
    }
}

将其保存为“C:\JavaStudy\ClassA.java”后,请尝试以下操作。

c:\JavaStudy>javac ClassA.java
c:\JavaStudy>java A.class
Error: Could not find or load main class A.class
c:\JavaStudy>java A
Hello world
c:\JavaStudy>

注意:如果你在执行的目录中有类文件,则不需要使用“java.exe -cp”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多