为什么“java Class”不能在当前目录中正常工作?

为什么“java Class”不能在当前目录中正常工作?

我有一个简单的程序,在以前的环境中运行良好。我将其移至具有相同操作系统和 Java 版本的新环境中,但在执行类文件时遇到了问题。

我从来没有遇到过在同一目录中运行 java 类的问题,但是当我尝试时却java Class出现错误could not find or load main class

我已经看过所有的建议,其中最流行的建议之一是添加类路径并将其作为运行java -cp . Class。然而,在我工作过的所有环境中,包括之前与此相同的环境,这从来都不是必要的。为什么会发生这种情况?我该如何修复它?

注意:如果您想知道,java -cp . Class它适用于没有依赖项的小型测试程序,但会导致没有明确解决方案的 JNI 错误,与 bashrc 类路径和当前目录(指定时-cp .)上的 jar 文件有关。无论如何,我只想像平常一样执行类。

更新

我确信这是环境问题,但这是代码。我将其称为java Test,而不是java testjava Test.class

class Test {
    public static void main(String[] args) {
        System.out.println("Test complete!");
    }
}

答案1

您需要先编译 Java 源代码,javac Test.java然后生成一个名为 Test.class 的新文件,然后再运行它。否则,您将收到此错误消息:Error: Could not find or load main class Test如下所示。如果您一次运行这些命令,它将显示哪个命令产生了意外结果。

$猫测试.java
类测试{
    公共静态void main(String [] args){
        System.out.println("测试完成!");
    }
}
$Java 测试
错误:无法找到或加载主类测试
$javac 测试.java  
$ls
测试.class 测试.java
$Java 测试
测试完成!
$java -cp ~/Desktop/ Test # 使用 classpath 进行测试
测试完成!

如您所见,最后一个命令在-cpclasspath 选项后有一个包含测试可执行文件的目录,而不是您在问题中所写的测试文件本身。

相关内容