一个简单的java程序:
package one.two.three.four;
class A 
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
}
}
我在dos命令提示符下:找到了A.java的位置用:javac -d d:\ A.java 编译成功:
在d盘的根目录下生成了: one\two\three\four\A.class (one--four为文件夹).接着我又设置classpath=d:\one\two\three\four;.;接着执行:用命令提示符进入到:d:\one\two\three\four> 执行:java A 提示错误.
我不明白.four文件夹下有一个A.class文件啊/怎么会失败呢?

解决方案 »

  1.   

    classpath 指向到d:即可
    不要进入到包内部执行;
    在d:目录下 执行 java one.two.three.four.A这里有一个java关于包的概念,one.two.three.four 它是java的包,
      

  2.   

    classpath 指向到d:即可
    这个我知道.我的意思是想问如果一个类,
    在头部声明了自己的包的话,即使到了这个类所包含包的最近的那一层文件夹下,
    也不能直接用java *.class去执行,这样说对吗?
      

  3.   

    对,
    classpath是指定了一个搜索路径,
    虚拟机搜索一个类是按照搜索路径 再加上 你的类所在的包, 你的类名这样去找的。
    这样你想像一下,你把classpath指向到了four下,你在four下执行,只不过你的当前路径落在了 four下,和你classpath指向four下是一样的效果,
    虚拟机找A,他会说没有这个类,因为他认可的应该是 包路径+A 而不是 A