java - 从命令行执行 Java 程序时收到 "wrong name"NoClassDefFoundError

标签 java noclassdeffounderror

我在尝试执行我的 java 应用程序时遇到问题。 每当我尝试通过命令执行程序时

java ProgAudioJ

我收到此错误:

Exception in thread "main"
java.lang.NoClassDefFoundError: ProgAudioJ (wrong name: es_2011/ProgAudioJ)
        at java.lang.ClassLoader.defineClass1(NativeMethod)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(NativeMethod)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: ProgAudioJ.  Program will exit.

如果我从我的代码中删除:

package es_2011;

一切都很完美。我该如何解决这个问题?

最佳答案

因为我发现这些答案不清楚,所以这是您需要做的。 首先,如果您打包您的代码(即您的类在顶部有 package 关键字),编译的类必须位于与代码中的包声明同名的目录中。编译完类后,您需要在执行 java 命令时上移一个目录,并包含包的名称。例如,如果您的代码存在于 /myFolder/myPackage/ 中,并且您的类以 package myPackage 开头(注意目录和包同名),那么您将执行以下操作(linux/osx):

cd /myFolder/myPackage

javac MyClass.java 

cd ..

java myPackage.MyClass

编辑 - 后期编辑以澄清我看到人们感到困惑的事情。在上面的示例中,包只有一层,这意味着它只是 myPackage。如果你的代码有一个更大的包,比如

package com.somedomain.someproject;

您需要从包含该包根目录的目录中执行 java 命令。例如,如果你编译的代码在 myCode/com/somedomain/someproject/MyMainClass.class 中,那么你将从 myCode 文件夹中执行 java 命令,如下所示(再次特别注意目录结构与包相同声明):

cd /myCode
java com.somedomain.someproject.MyMainClass

关于java - 从命令行执行 Java 程序时收到 "wrong name"NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4951695/

相关文章:

java - 获取 java.lang.ClassNotFoundException : org. apache.commons.logging.LogFactory 异常

java - 我需要使用 Java+OpenGL 构建哪些 Ubuntu/Debian 软件包?

java - HashMap.put 没有按预期工作

java - sshj 0.9.0 抛出 NoClassDefFoundError : net/schmizz/sshj/SSHClient

java - WhiteSpaceProcessor 上的另一个奇怪的 NoClassDefFoundError

android - 如何使用 Android Studio 修复 twitter4j 中的 NoClassDefFoundError?

命令行中的 Java NoClassDefFoundError

java - 拆分全名

java - 当我在 Java 中添加一个字符和一个字符串时会发生什么?

java - HashSet中是否可以输入重复的值?