-1

我有一个 java 应用程序,其中主类依赖于其他一些类。我可以很好地使用 IDE 运行应用程序。但是当我想通过使用 定位到主类的类文件来从命令行运行应用程序时java mainClass,它给了我以下错误[主类名称是mainClass]:

Exception in thread "main" java.lang.NoClassDefFoundError: mainClass(wrong name: mainfolder/mainClass)

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

谁能建议我如何在不使用任何 IDE 的情况下运行我的应用程序?

4

5 回答 5

1

你需要指明完全限定的名称。例如,如果MainClass在包 com.example 下,则应执行java com.example.MainClass

你可以在这里查看更多。

从文档:

默认情况下,第一个非选项参数是要调用的类的名称。应使用完全限定的类名。如果指定了 -jar 选项,则第一个非选项参数是包含应用程序的类和资源文件的 JAR 归档的名称,启动类由 Main-Class 清单头指示。Java 运行时在三组位置搜索启动类和其他使用的类:引导类路径、已安装的扩展和用户类路径。

于 2012-06-26T06:52:16.510 回答
0

尝试mainfolder.mainclass代替mainfolder/Mainclass. 此外,主文件夹是包。

确保将所有需要的 jars 放在带有-cp.

于 2012-06-26T06:51:08.843 回答
0

无论有没有 IDE,java 应用程序总是可以从

java -cp classpath EntryClass

如果您使用 IDE 运行应用程序,您使用的 IDE 会为您准备类路径。如果您在没有 IDE 的情况下运行,您应该自己准备整个类路径。

EntryClass 也可以通过类路径找到。

详情请参阅java - Java 应用程序启动器

于 2012-06-26T06:59:40.563 回答
0

假设您正在从 /home/flyleaf/app/ 运行您的 java 程序

这将是您需要的命令:

javac -classpath /home/flyleaf/app/jar1.jar:/home/flyleaf/app/jar1.jar:/home/flyleaf/app/ com/app/your/mail/class/Main.java

您需要将所需的 jar 文件和获取程序的路径添加到类路径中

于 2012-06-26T07:01:39.963 回答
0

行!从包含类文件的文件夹外部通过main class's class filewith执行 java 命令后得到输出!package.classname

此外,找到 jar 文件并执行此命令后,jar 文件也可以正常工作java -jar jarname.jar

谢谢大家!

于 2012-06-26T07:02:11.873 回答