线程“main”java.lang.NoClassDefFoundError:program中出现异常(错误名称:program/program)

线程“main”java.lang.NoClassDefFoundError:program中出现异常(错误名称:program/program),java,compilation,Java,Compilation,我在mac上编写了一个程序,并通过终端进行编译: cd user/desktop/Code/Program/src/program javac Program.java **java Program** 然后我得到这个错误: Exception in thread "main" java.lang.NoClassDefFoundError: Program (wrong name: program/Program) at java.lang.ClassLoader.defineClas

我在mac上编写了一个程序,并通过终端进行编译:

cd user/desktop/Code/Program/src/program
javac Program.java
**java Program**
然后我得到这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: Program (wrong name: program/Program)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:480)
有人知道我怎么解决这个问题吗

源代码:

package learning;

public class Learning{

    public static void main(String[] args){
        String[] wordListOne = {"you are","I know","I eat"};
        String[] wordListTwo = {"a poo","a funny","a posh"};
        String[] wordListThree = {"Sandwich","person","object"};

        int oneLength = wordListOne.length;
        int twoLength = wordListTwo.length;
        int threeLength = wordListThree.length;

        int rand1 = (int) (Math.random() * oneLength);
        int rand2 = (int) (Math.random() * twoLength);
        int rand3 = (int) (Math.random() * threeLength);

        String phrase = wordListOne[rand1]+" "+wordListTwo[rand2]+" "+wordListThree[rand3];

        System.out.println(phrase);
    }
}
试着用这个

javac learning/Learning.java
java learning.Learning
你的计划叫学习,不是计划。您必须在学习文件夹所在的目录中执行此操作。例如:

C:/path/to/files/learning/Learning.class
然后使用cd命令导航到C:/path/to/files/:


然后执行您的语句。

将文件名更改为Learning.java

然后编译并运行它Learning.java而不是program.java


文件名应与静态类的文件名相同。

NoClassDefFoundError通常意味着编译时可用的类在运行时不可用。例如,编译和运行时类路径不匹配。这里有一篇博文对此做了更详细的解释:

你有一个名为Program的类吗?我只是在本教程中将其称为learning,但忘记了源代码,damnitI做了上述操作,它给了我错误信息posted@user1992091第一行是不同的。上面说什么?另外,您是否将.java文件放入名为learning的文件夹中?是的。我的文件夹如下:Desktop/Code/Learning/src/Learning/Learning.java和Learning。class@Doorknob-java学习/学习是错误的。应该是java学习。学习还有问题吗?您必须将类名更改为Program或将Program.java更改为Learning.java
cd C:/path/to/files/