tack.class 是不合理的,因为 TestMystack 程序中的 package 语句指定了有名的当前包(而不是当前目录的无名包了) 。 要将测试程序与包分开,具体做法是: ① javac -d .Mystack.java Mystack.class 会出现在当前目录的 stack 目录下。 ②还要注意:不要将放入包中的那些类的源程序(如 Mystack.java)与测试程序放在一 起。例如:可以在当前目录下建一个 source 目录,然后将 Mystack.java 移到 source 目录下。 ③将 TestMystack.java 中的 package stack 改为 import stack ,然后编译: javac TestMystack.java 会在当前目录下生成 TestMystack.class 文件 ④执行 java TestMystack 注意:classpath 要包括当前目录,因为在该例中 TestMystack.class 类文件和程序中打开 的 stack 包都在当前目录下。
总之,要将使用包的程序(如测试程序)和包分开,和包中的类的源程序分开,不要搅 到一起。 =====================================================================