标题:有关import的一个问题
只看楼主
lilyfei
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2007-3-9
得分:0 
以下是引用wfpb在2007-5-9 23:10:29的发言:

学到一直都没有注意到的东西了,请问LZ,你出错是因为什么导致的呢?

因为import的两种引用方法的工作机制不同。如果用到了“*”,import并不会按你设置路径来找要用的class文件,而是首先找classpath有没有

2007-05-10 14:39
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
经过上面的import 详解我知道他的寻找路径,只是问你,你的错误的原因是什么!
启动目录和扩展目录是什么?你的包是放在classpath里。找不到?似乎不可能吧?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-05-10 20:29
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
以下是引用lilyfei在2007-5-10 14:37:24的发言:

我本来就是把.java与包放在同一目录下的。只是如果导入的类文件的源文件如果也在此目录下的话,就不能按需导入了(如:import a.b.*)。但是移走引用类的源文件,就OK了。不信,你可以试试!

我这里需要导入的类源文件和类都在一个包对应的文件夹里面的,这样肯定是可以导入import xx.*;的

问题是,你需要导入的类的文件放在哪里,你必须放在也放到相应的包所对应的目录里面
然后去这两个包所在的共同的顶层目录下,去编译

首先我们假设我们当前的目录是C:\

比如有一个类是属于lbf.demo包,它叫A,那么A.java是放在C:\lbf\demo\这个文件夹下面.
还有一个类是属于xx.abc包,它的名字叫B,它需要用到A,那么B.java应该是放在C:\xx\abc\文件夹下面

CMD进入C:\

javac lbf\demo\A.java
javac xx\abc\B.java

然后再java xx.abc.B

就可以了,所以说,养成一个用包来组织程序的习惯很重要,源文件也同样需要管理
不过,现在IDE已经非常好的做到了这一点,使得代码管理更简单了,但是我们最好还是知道其原理更好一些
用这种方法,根本不用删掉源文件,一样可以编译运行成功


可惜不是你,陪我到最后
2007-05-11 09:40
niitstar
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2007-4-3
得分:0 
以下是引用lilyfei在2007-5-10 14:39:30的发言:

因为import的两种引用方法的工作机制不同。如果用到了“*”,import并不会按你设置路径来找要用的class文件,而是首先找classpath有没有

要正确的引入包,最重要的是要设置好classpath路径和保证路径名正确


随风而来,乘风而去...
2007-05-12 09:04
沉沦过迁
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:2297
专家分:10
注 册:2007-5-8
得分:0 

import 问题 终于清楚 谢谢13楼


也许我没有明天,但是我拥有现在
2007-05-13 17:59
daniel198510
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-3-26
得分:0 
我估计是classpath的路径设置不正确,是不是少加了一项:".;"

2007-05-14 22:10
niitstar
Rank: 1
等 级:新手上路
威 望:1
帖 子:114
专家分:0
注 册:2007-4-3
得分:0 

很久没到这里了,来一次,学到不少。。。。


随风而来,乘风而去...
2007-05-25 21:47
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
得分:0 

LZ可能是类命名冲突了,假如你当前路径或者classpath路径上有circle类,那么就造成了类名冲突所以说找不到类。
import chapter4.shape.shape2D.*;
class CirRecTest{
public static void main(String agrs[]){
chapter4.shape.shape2D.Circle cir=new chapter4.shape.shape2D.CircleCircle(10);
System.out.println("圆的半径为:"+cir.getRadius());
System.out.println("圆的面积为:"+cir.area());
System.out.println("圆的周长为:"+cir.perimeter());
Rectangle rec=new Rectangle(10,20);
System.out.println("矩形的边长为:"+rec.getLength()+","+rec.getWidth());
System.out.println("举行的面积为:"+rec.area());
System.out.println("矩形的周长为:"+rec.perimeter());
}
}

这样你试试,应该可以了。

2007-05-25 23:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-136570-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.297405 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved