java命令行执行
问题描述:
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”如何找到并执行一个类?为什么不能直接指定类文件?java命令行执行
答
如果您添加.class java认为您正在查找包“Welcome”中名为“class”的类。因为没有你会得到一个错误。
答
传递给java.exe的参数是类名(带有可选包),而不是文件名。
问候。
答
'点'是一个分隔符。当您编写Welcome.class时,它正在寻找名为'class'的'Welcome'包中的类。
答
它将文件名中的点解释为包名称。随着您对java的了解提高,您将了解包,并发现通常您的类文件位于包中,例如,如果Welcome类位于包“com.ericasberry”中,则可以通过键入java com.ericasberry.Welcome
答
首先你需要给javac file_name.java编译后编译java程序,它会生成点(。)类文件,所以你不能直接给这个类文件编译程序。
-1。 OP非常清楚地做到了这一点。 – 2013-10-03 13:41:18