目录结构:
            c:
            |    
            | 
          CalTime
    --------|--------
   |                |
   |                |
 vehicle         ComputeTime.java
   |
 ---------
 |       |
 |       |
 all   Palne.java /Car.java
 |
 |
Common.java源程序1:(ComputeTime.java)import CalTime.vehicle.all.Common;
import java.lang.*;public class ComputeTime {
  public static void main(String args[]) {
             ...
    double A=Double.parseDouble(args[1]); 
    double B=Double.parseDouble(args[2]); 
    double C=Double.parseDouble(args[3]);
      
    double v,t;
    try {
      Common d=(Common) Class.forName("CalTime.vehicle."+args[0]).newInstance(); 
      v=d.runTimer(A,B,C);
            ...      } catch(Exception e)  {
        System.out.println(class not found);
      }
   }
}源程序2:(Plane.java)
package CalTime.vehicle;import CalTime.vehicle.all.Common;public class Plane implements Common {
  public double runTimer(double a, double b, double c) {
    return (a+ b + c);
  }
}源程序3:(Car.java)
package CalTime.vehicle;import CalTime.vehicle.all.Common;public class Car implements Common {
  public double runTimer(double a, double b, double c) {
    return ( a*b/c );
  }
}接口:(Common.java)package CalTime.vehicle.all;public interface Common {
  double runTimer(double a, double b, double c);
}在上面这个例子中,我用JBuilder调试编译通过了,但是在命令行模式执行的时候老说出错,C:\>java -classpath c:\CalTime\ComputeTime Plane 200 200 200
Exception in thread "main" java.lang.NoClassDefFoundError: Plane我试了试把全部源程序的包路径都删掉,把全部源程序放在一个默认包里,编译然后执行,可以执行,而且带参数的执行可以动态加载类,结果正确!这到底是怎么一回事?!我查了一些资料和java文档,这一句:Common d=(Common) Class.forName("CalTime.vehicle."+args[0]).newInstance(); 是这样用的啊!编译也没错,就是得不到结果,我怀疑是("CalTime.vehicle."+args[0])的动态加载路径问题,可是classpath里面我已经设了c:\了,各个类也在相应的包里面,百思不解!请那位大虾指点!