类A代码
package tom.lsf;
  public class A{ 
     public int a,b;
      public A(int a,int b){this.a=a;this.b=b;}
   }类B代码
package tom.lsf;
import tom.lsf.A;
   public class B{
     public static void main(String r[]){
       A a1=new A(4,5); System.out.println(a1.a+ " "+a1.b);
     }
   }
   
OK。现在我将两个文件放在C盘根目录,然后java -d . A.java ,java -d . B.java
这个时候如果我要运行程序,为什么我进入c:\tom\lsf,然后java B不行?我已经在当前目录设置classpath了啊。新手不要见谅啊。

解决方案 »

  1.   

    直接下载个eclipse运行环境就OK
      

  2.   

    类全名=包名+类名,所以你运行java tom.lsf.B。
      

  3.   


    你的意思是。必须从包外部来运行这个类。且类名要写全称。
    我进入了lsf目录之后java B为什么不行呢? 我已经定义classpath有当前目录了。
      

  4.   

    4楼说的没错,我做了测试(可能测试有误)。虽然在classpath中加入了该路径。你在编译时,进入到该目录不用类的全名。但是在java执行时,还是需要全名。即java tom.lsf.B
      

  5.   

    当使用了包名以后,包名类名就是不可再分的了,你必须从包名的上一级目录开始java执行,象你的情况应是:如tom的上级目录是c:根目录,需在c:\下,java tom.lsf.B就OK了。