Java 意外的运行时错误:无法加载主类

Java 意外的运行时错误:无法加载主类,java,Java,我尝试了一些代码来更好地理解访问修饰符。在我添加了一行代码后,一切都运行得很好 class SomeClass2 { protected static void method4() { } protected static int x=0; } class SomeClass3 extends SomeClass2{ int c=SomeClass2.x; public void somemethod() //Everything was compiling fine

我尝试了一些代码来更好地理解访问修饰符。在我添加了一行代码后,一切都运行得很好

class SomeClass2 {

  protected static void method4() { }
  protected static int x=0;
}
class SomeClass3 extends SomeClass2{

    int c=SomeClass2.x;
    public void somemethod() //Everything was compiling fine until
    {                        //Until I added this method
    SomeClass2.method4();
    }
}
class DemoClass1{
      public static void main(String[] parameters) {
    SomeClass2 sc = new SomeClass2();
    SomeClass3 sc1 = new SomeClass3();

    sc.method4();
    System.out.println(sc1.c);
sc1.somemethod();

  }
}
我收到一个错误:
无法找到或加载主类DemoClass1

所有类都属于相同的目录和相同的包。环境变量也都设置好了。在我添加
somemethod()
之前,它一直在编译并运行良好。它编译得很好,但不运行。

我看不出您提供的代码有任何明显的错误

你重命名文件了吗

JVM将在名为与文件名完全相同的类中查找main方法。在这种情况下,您的文件应该命名为

DemoClass1.java

你的代码没有问题。将每个类保存在各自的文件中(
DemoClass1.java
SomeClass2.java
SomeClass3.java


无论是否使用
somemethod

都编译和执行得很好,您是如何构建这个的?eclipse?我复制了你的代码并创建了一个新类,它运行得很好..没有错误或任何东西。确保你做了一个干净的构建。不,我用记事本来写,用cmd(Windows7)来编译。设置了环境变量。虽然我将相同的代码放在不同的文件名中,更改了所有的类名并编译了它,它运行良好,我得到了输出:0,但我的问题是为什么它没有在已经工作的代码上运行no。我没有做任何改变,只是将这个方法添加到一个已经在工作的代码中。在此之前,它是编译良好的虽然我将相同的代码放在不同的文件名中,更改了所有的类名并编译了它,它运行良好,我得到了输出:0 somemethod已执行(只是和我后来添加的SOP),但我的问题是,为什么它没有在已经工作的代码上运行您的代码看起来是正确的,所以我会在其他地方查找问题。可能有许多原因涉及到您的开发环境,也可能是您的系统变量。在编译新的.class文件之前,请确保正在删除旧的.class文件。像ApacheAnt、Maven或Gradle这样的构建工具在这方面帮助很大。最重要的是:坚持!好的,谢谢。我只是觉得在使用构建工具和IDE之前,我可以更流利地使用java。我确实在同一个目录中有DemoClass1.java SomeClass2.java和SomeClass3.java。然而,我得到了这样一个错误尽管我将相同的代码放在不同的文件名中,更改了所有的类名并编译了它,它运行良好,我得到了输出:0 somemethod已执行(只是我后来添加的一个SOP),但我的问题是为什么它没有在已经工作的代码上运行