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.**
这个问题的解决方案是什么,谢谢
# 1 楼答案
必须指定类的完整路径,否则java找不到该类
# 2 楼答案
您需要提供完全限定的类名,并从根目录(或将该目录放在类路径中)执行此操作:
或者
你告诉
java
命令一个类的全名,这就是它要找的。当它找到一个相关的类文件时,它将检查其中的类是否真的具有该完全限定名