C:\Program Files\Java\jdk1.6.0_05\CoreJava\v1\v1ch2\Welcome>javac Welcome.java
C:\Program Files\Java\jdk1.6.0_05\CoreJava\v1\v1ch2\Welcome>java Welcome.class
Exception in thread "main" java.lang.NoClassDefFoundError: Welcome/class
Caused by: java.lang.ClassNotFoundException: Welcome.class
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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
C:\Program Files\Java\jdk1.6.0_05\CoreJava\v1\v1ch2\Welcome>java Welcome
Welcome to Core Java
by Cay Horstmann
and Gary Cornell
所以我的问题是,“java”如何查找并执行一个类?为什么不能直接指定类文件?
答案 0 :(得分:2)
如果添加.class,则认为您在“欢迎”包中寻找名为“class”的类。因为没有一个你得到错误。
答案 1 :(得分:2)
'dot'是一个分隔符。当你编写Welcome.class时,它正在寻找一个名为'class'的类,它位于'Welcome'包中。
答案 2 :(得分:2)
答案 3 :(得分:1)
传递给java.exe的参数是类名(带可选包),而不是文件名。
问候。
答案 4 :(得分:1)
它将文件名中的点解释为包名称。随着您对java的了解,您将了解包并发现通常您的类文件在包中,因此,例如,如果Welcome类位于包“com.ericasberry”中,我会通过键入来运行它java com.ericasberry.Welcome
答案 5 :(得分:-2)
首先你需要给javac file_name.java,之后编译器将编译java程序并生成点(。)类文件。所以你不能直接给出类文件而不编译程序。