日期:2014-05-20  浏览次数:20731 次

为什么不能顺利的导入这个包?
包:
package   tom.jiafei;
public   class   SquareEquation
{
double   a,b,c;
double   root1,root2;
boolean   boo;
public   SquareEquation(double   a,double   b,double   c)
{
this.a=a;
this.b=b;
this.c=c;
if(a!=0)
{
boo=true;
}
else
{
boo=false;
}
}
public   void   getRoots()
{
if(boo)
{
System.out.println( "是一元2次方程 ");
double   disk=b*b-4*a*c;
if(disk> =0)
{
root1=(-b+Math.sqrt(disk))/(2*a);
root2=(-b-Math.sqrt(disk))/(2*a);
System.out.printf( "方程的根:%f,%f\n ",root1,root2);
}
else
{
System.out.printf( "方程没有实根\n ");
}
}
else
{
System.out.printf( "不是一元二次方程 ");
}
}
public   void   setCoefficient(double   a,double   b,double   c)
{
this.a=a;
this.c=c;
this.b=b;
if(a!=0)
{
boo=true;
}
else
{
boo=false;
}
}
}

主程序
import   tom.jiafei.SquareEquation;
class   Example
{
public   static   void   main(String   args[])
{
SquareEquation   equation=new   SquareEquation(4,5,1);
equation.getRoots();
equation.getRoots();
equation.setCoefficient(-3,4,5);
equation.getRoots();
}
}

当这样写时import   tom.jiafei.SquareEquation;能够编译通过
当这样写时import   tom.jiafei.*;就不能够编译通过了
这是为什么呢?
写成*不是导入所有的包吗?
为什么还会有这样的提示
E:\java> javac   Example.java
Example.java:6:   无法访问   SquareEquation
错误的类文件:   .\SquareEquation.class
类文件包含错误的类:   tom.jiafei.SquareEquation
请删除该文件或确保该文件位于正确的类路径子目录中。
                                SquareEquation   equation=new   SquareEquation(4,5,1);
谢谢~

------解决方案--------------------
你的当前路径下存在SquareEquation.class文件. 删除它或者移到tom\jiafei目录下. 如果有原文件的话也要这样处理. 这样就Ok了. 这样写import tom.jiafei.SquareEquation, 编译器会直接导入这个类. 只要相应的路径下存在原文件或类文件,就会成功!
如果这样写import tom.jiafei.*;编译器并不会直接导入所有类,只是判断包是否存在.遇到SquareEquation时,并不知道有限定名,会去类路径下查找. 对于你的问题,因为它首先在当前目录下发现这个类或者原文件,同时它发现这个类是有限定名的,所以报错!