| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 986 人关注过本帖
标题:初级问题,大家见笑,关于两个不同包的类相互访问的问题。
只看楼主 加入收藏
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
 问题点数:0 回复次数:8 
初级问题,大家见笑,关于两个不同包的类相互访问的问题。

1。我先在E:\JAVA\ 目录下新建了一个文件夹p1,然后我将三个.java文件保存在此文件夹里,我通过命令行方式编译并且通过了。接着,我又在E:\JAVA\ 下新建了文件夹p2,然后将二个.java文件放到此文件夹里,这两个.java文件都调用了p1中的类,我仍然在命令行下编译,但是出现编译错误,提示找不到p1,我将P1复制到p2里,再次编译运行,这次通过了,我想知道这是怎么回事?


2。还有就是在命令行方式下编译的时候,为什么必须把同一包中的所有.java文件一次性通过javac编译,而不能一个一个的分别编译呢?

谢谢!!

搜索更多相关主题的帖子: 见笑 初级 访问 
2006-01-10 22:20
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
得分:0 
我不告诉你我在哪里,你找不找得到我??
你不告诉类A 类B的位置,又怎么引用类B呢?
看看关于封装的部分就了解了。

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2006-01-11 10:24
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
以下是引用cll19820814在2006-1-11 10:24:00的发言:
我不告诉你我在哪里,你找不找得到我??
你不告诉类A 类B的位置,又怎么引用类B呢?
看看关于封装的部分就了解了。
请问要怎么把包p1的位置告诉包p2?




p1中的三个.java文件我都在开头加了package p1;p2中的两个.java文件我加了package p2;我没用import,我在p2中的.java文件调用p1中的类的语句处用的全名,也就是包名(p1)+类名;
我的classpath:.;C:\j2sdk1.4.2_10\lib
我在命令行方式是这样键入的:
先编译p1中的.java文件:
E:\JAVA\p1>javac SamePackage.java Protection.java Derived.java Demo.java(编译通过)
然后:
E:\JAVA\p1>cd..
E:\JAVA>java p1.Demo(显示出正确结果)

再编译p2中的.java文件:
E:\JAVA\p2>javac Demo.java OtherPackage.java Protection2.java(编译通不过)
错误信息:
Protection2.java:2: package p1 does not exist
class Protection2 extends p1.Protection
^
OtherPackage.java:6: package p1 does not exist
p1.Protection p=new p1.Protection();
^
OtherPackage.java:6: package p1 does not exist
p1.Protection p=new p1.Protection();
^
Protection2.java:9: cannot resolve symbol
symbol : variable n_pro
location: class p2.Protection2
System.out.println("n_pro="+n_pro);
^
Protection2.java:10: cannot resolve symbol
symbol : variable n_pub
location: class p2.Protection2
System.out.println("n_pub="+n_pub);
^
5 errors

接着我将包p1整个复制到包p2中再次编译:
E:\JAVA\p2>javac Demo.java OtherPackage.java Protection2.java(这次编译通过了)
E:\JAVA\p2>cd..
E:\JAVA>java p2.Demo(得到正确结果)

这到底是什么原因呢?
2006-01-11 13:41
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
得分:0 
我个人建议还是要用import语句吧?还有classpath里加入了那个p1, p2 包没有?

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2006-01-11 14:05
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
我个人建议还是要用import语句吧?
-------但是用全名跟用import的作用是一样的

还有classpath里加入了那个p1, p2 包没有?
---------要
为什么要加入那个p1, p2 包?
我的classpath:.;C:\j2sdk1.4.2_10\lib
2006-01-11 14:35
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
得分:0 

classpath 俺从字面上 理解即类路径,即由这个找到类,JAVA的基本工具包如是,自己写的类亦如是。


懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2006-01-11 14:41
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
那我的classpath有问题吗?
2006-01-11 14:48
tody
Rank: 1
等 级:新手上路
威 望:2
帖 子:119
专家分:0
注 册:2005-11-17
收藏
得分:0 
你设置的东西一点错误也没有,
在dos下javac只能看见在所在目录的包,
例如:c:\test\test2\test3\test6\Test.java
c:\test\test2\test4\test7\Test.java
c:\test\test2\test5\test8\Test.java
你进入到test2目录即C:\test\test2
那么它将不识别包test
只识别test3,test4和test5,也不识别test6,test7,test8
向你所说的那总情况下,你可以通过下面的方法编译:
进入到目录E:\JAVA下
然后使用-classpath指定路径编译就可以了即:
E:\JAVA\javac E:\JAVA\P2 文件名就可以了

记录就是用来破的, 自尊就是用来伤的。
2006-01-11 17:20
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
呵呵,豁然开朗,谢谢了!
2006-01-11 20:47
快速回复:初级问题,大家见笑,关于两个不同包的类相互访问的问题。
数据加载中...
 
   



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

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