有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java调用属于包的main()

我无法理解此错误,情况是:

这是目录结构:

classes/
    root/
        pkgmain/Cmain.class
        pkg1/C1.class
        pkg2/C2.class

问题是,当我尝试从以下路径运行Cmain文件(main()在此文件中)时,会出现错误:

C:\Ravi\MakingJarFile\classes\root\pkgmain>java Cmain
Exception in thread "main" java.lang.NoClassDefFoundError: Cmain (wrong name: root/pkgmain/Cmain)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        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$000(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)
Could not find the main class: Cmain.  Program will exit.**

这个问题的解决方案是什么,谢谢


共 (2) 个答案

  1. # 1 楼答案

    必须指定类的完整路径,否则java找不到该类

    java root.pkgmain.Cmain
    
  2. # 2 楼答案

    您需要提供完全限定的类名,并从目录(或将该目录放在类路径中)执行此操作:

    C:\Ravi\MakingJarFile\classes> java root.pkgmain.Cmain
    

    或者

    C:\Anywhere> java -cp C:\Ravi\MakingJarFile\classes root.pkgmain.Cmain
    

    你告诉java命令一个类的全名,这就是它要找的。当它找到一个相关的类文件时,它将检查其中的类是否真的具有该完全限定名