A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Eagle 于 2014-10-21 09:32 编辑

  1. package pack;//新建包名pack

  2. /*
  3. package必须要放在代码的第一行

  4. 访问方式是:包名.类名


  5. */

  6. public class  PackageDemo
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 System.out.println("Hello package!");
  11.                 System.out.println("Hello package!");
  12.                 packa.DemoA d = new packa.DemoA();//创建DemoA的对象
  13.                 //创建对象格式:包名.类名 对象名 = new 包名.类名();
  14.                 d.show();//调用show方法。
  15.         }
  16. }
  17. /*
  18. 总结:
  19.         包与包之间的访问,被访问包中的类以及类中的成员,需要被public修饰。




  20. */
复制代码
  1. package packa;
  2. //建立包名packa

  3. public class DemoA extends packb.DemoB //需要对外访问就必须要设置为public公开的,可以和其他的包中的类有继承关系。
  4. {
  5.         public void show()//函数也需要设置为公开的
  6.         {
  7.                 System.out.println("Hello DemoA");
  8.                 method();
  9.         }
  10. }

复制代码
  1. package packb;

  2. public class DemoB
  3. {
  4.         public void method()
  5.         {
  6.                 System.out.println("method run out");
  7.         }
  8. }
复制代码


就是这些代码了。
运行命令行结果:
E:\java\day10>javac -d e:\java\myclass DemoB.java

E:\java\day10>javac -d e:\java\myclass DemoA.java
DemoA.java:4: 错误: 程序包packb不存在
public class DemoA extends packb.DemoB //需要对外访问就必须要设置为public公开的,
可以和其他的包中的类有继承关系。
                                ^
DemoA.java:9: 错误: 找不到符号
                method();
                ^
  符号:   方法 method()
  位置: 类 DemoA
2 个错误

求大神解救啊


问题解决:
问题由大神:" 小爷邱烙" 通过模拟实验完成。在此感谢


问题是因为classpath配置错误而造成的
解决方法:
set classpath=e:\java\myclass
个人路径不同,请参照自己设置的参数 -d 后面的路径


评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

23 个回复

倒序浏览
本帖最后由 HM2014nuli 于 2014-10-21 08:17 编辑

第一,先编译packb的包,在编译packa的包,在编译pack的包
packa.DemoA d = new packa.DemoA();//创建DemoA的对象这里需要强转,因为父类里面没有show·方法,需要强制把父类引用转换成子类类型,在调用show方法:packa.DemoA  a=(packa.DemoA)d;   a.show();

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
HM2014nuli 发表于 2014-10-21 08:14
第一,先编译packb的包,在编译packa的包,在编译pack的包
packa.DemoA d = new packa.DemoA();//创建DemoA ...

运行命令行结果:
E:\java\day10>javac -d e:\java\myclass DemoB.java
//这里编译成功了的
E:\java\day10>javac -d e:\java\myclass DemoA.java
DemoA.java:4: 错误: 程序包packb不存在
public class DemoA extends packb.DemoB //需要对外访问就必须要设置为public公开的,
可以和其他的包中的类有继承关系。
                                ^
DemoA.java:9: 错误: 找不到符号
                method();
                ^
  符号:   方法 method()
  位置: 类 DemoA
2 个错误


我是先编译的B包,然后编译A包就编译失败了,说B包不存在
回复 使用道具 举报
先把包内的类import倒进来,在用这个类创建对象,应该会好一点吧。
回复 使用道具 举报
本帖最后由 HM2014nuli 于 2014-10-21 08:29 编辑

先 javac -d . DemoB,在javac -d .DemoA, 再 javac -d.PackageDemo ,然后java pack.PackageDemo,就可以了
你的程序全不用改,先前我自己弄错了,抱歉
回复 使用道具 举报
HM2014nuli 发表于 2014-10-21 08:27
先 javac -d . DemoB,在javac -d .DemoA, 再 javac -d.PackageDemo ,然后java pack.PackageDemo,就可以了
...

不行的。。。可能在你的电脑上行。但是我的电脑上真的运行失败
回复 使用道具 举报
Eagle 高级黑马 2014-10-21 08:33:52
7#
HM2014nuli 发表于 2014-10-21 08:27
先 javac -d . DemoB,在javac -d .DemoA, 再 javac -d.PackageDemo ,然后java pack.PackageDemo,就可以了
...

都是一样的。编译失败,说是B包不存在
回复 使用道具 举报
Eagle 高级黑马 2014-10-21 08:41:02
8#
zhappy 发表于 2014-10-21 08:24
先把包内的类import倒进来,在用这个类创建对象,应该会好一点吧。

毕老师的视频能过。我自己编译就不行。。.你说的import。。。好像没学。。
回复 使用道具 举报
zhappy 中级黑马 2014-10-21 08:43:03
9#
Eagle 发表于 2014-10-21 08:41
毕老师的视频能过。我自己编译就不行。。.你说的import。。。好像没学。。 ...

那就不知道了,我没看过前面视频。
回复 使用道具 举报
Eagle 高级黑马 2014-10-21 08:46:28
10#
zhappy 发表于 2014-10-21 08:43
那就不知道了,我没看过前面视频。

恩呢。不过还是谢谢啦
回复 使用道具 举报
本帖最后由 HM2014nuli 于 2014-10-21 08:49 编辑
Eagle 发表于 2014-10-21 08:33
都是一样的。编译失败,说是B包不存在

你就按我的做,先在本地(-d .)创包,肯定行的,(反正我用你的代码,我自己的顺序,完全没问题),我现在按你的保存路径再帮你看看、

回复 使用道具 举报
Eagle 高级黑马 2014-10-21 08:49:04
12#
HM2014nuli 发表于 2014-10-21 08:47
你就按我的做,先在本地(-d .)创包,肯定行的,(反正我用你的代码,我自己的顺序,完全没问题) ...

我就是试过才回复你的、、、、
E:\java\day10>javac -d . DemoB.java

E:\java\day10>javac -d . DemoA.java
DemoA.java:4: 错误: 程序包packb不存在
public class DemoA extends packb.DemoB //需要对外访问就必须要设置为public公开的,
可以和其他的包中的类有继承关系。
                                ^
DemoA.java:9: 错误: 找不到符号
                method();
                ^
  符号:   方法 method()
  位置: 类 DemoA
2 个错误
回复 使用道具 举报
Eagle 发表于 2014-10-21 08:49
我就是试过才回复你的、、、、
E:\java\day10>javac -d . DemoB.java

我想说,你这3个类是不是都在E:\java\day10>这里
回复 使用道具 举报
Eagle 高级黑马 2014-10-21 09:00:30
14#
HM2014nuli 发表于 2014-10-21 08:58
我想说,你这3个类是不是都在E:\java\day10>这里

三个源文件都在这里。:o
回复 使用道具 举报
实验了好半天,终于模拟出你的错误了,真不容易,你classpath配错了或者没配,而java文件和class文件又存放到了不同的路径。
去检查你的classpath吧

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 必须赞一个!

查看全部评分

回复 使用道具 举报
E:\java0717\day01>javac -d e:\java\myclass DemoB.java

E:\java0717\day01>javac -d e:\java\myclass DemoA.java

E:\java0717\day01>javac -d e:\java\myclass PackageDemo.java
E:\java0717\day01>set classpath=e:\java\myclass;%path%
E:\java0717\day01>java pack.PackageDemo
Hello package!
Hello package!
Hello DemoA
method run out
回复 使用道具 举报
本帖最后由 HM2014nuli 于 2014-10-21 09:11 编辑

我真心帮不了你了,我也是新人,我也无能为力,还忘记吃早餐了。。。我去。。。
回复 使用道具 举报
Eagle 高级黑马 2014-10-21 09:25:42
18#
小爷邱烙 发表于 2014-10-21 09:03
实验了好半天,终于模拟出你的错误了,真不容易,你classpath配错了或者没配,而java文件和class文件又存放 ...

谢谢你了,搞定了。确实是这个问题。但是奇怪的是我之前也配过classpath的。编译失败。我才过来提问的。但是刚才看见你发的我又重新配置了一遍。。居然可以了、、这个不知道是什么情况
回复 使用道具 举报
Eagle 高级黑马 2014-10-21 09:27:02
19#
HM2014nuli 发表于 2014-10-21 09:06
我真心帮不了你了,我也是新人,我也无能为力,还忘记吃早餐了。。。我去。。。 ...

额。。:)。谢谢哥们了。找到问题了。是classpath配置错误了。。。。汗、、去吃饭吧。。以后北京能一起的话请你吃饭。哈哈
回复 使用道具 举报
Eagle 发表于 2014-10-21 09:27
额。。。谢谢哥们了。找到问题了。是classpath配置错误了。。。。汗、、去吃饭吧。。以后北京能一起的 ...

昨天面试失败了,现在打算再申请一次,我申请的是深圳的,能帮则帮,不必言谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马