java命令行执行

时间:2009-07-02 15:28:34

标签: java command-line

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”如何查找并执行一个类?为什么不能直接指定类文件?

6 个答案:

答案 0 :(得分:2)

如果添加.class,则认为您在“欢迎”包中寻找名为“class”的类。因为没有一个你得到错误。

答案 1 :(得分:2)

'dot'是一个分隔符。当你编写Welcome.class时,它正在寻找一个名为'class'的类,它位于'Welcome'包中。

答案 2 :(得分:2)

java程序需要一个类名作为参数,而不是文件名。如java手册中所述:(java

  

java [options] class [argument ...]

一旦清楚地了解了classpath

答案 3 :(得分:1)

传递给java.exe的参数是类名(带可选包),而不是文件名。

问候。

答案 4 :(得分:1)

它将文件名中的点解释为包名称。随着您对java的了解,您将了解包并发现通常您的类文件在包中,因此,例如,如果Welcome类位于包“com.ericasberry”中,我会通过键入来运行它java com.ericasberry.Welcome

答案 5 :(得分:-2)

首先你需要给javac file_name.java,之后编译器将编译java程序并生成点(。)类文件。所以你不能直接给出类文件而不编译程序。