黑马程序员技术交流社区

标题: 学到包,编译失败。 “错误: 程序包packb不存在”。求帮助 [打印本页]

作者: Eagle    时间: 2014-10-21 07:51
标题: 学到包,编译失败。 “错误: 程序包packb不存在”。求帮助
本帖最后由 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 后面的路径



作者: HM2014nuli    时间: 2014-10-21 08:14
本帖最后由 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();

作者: Eagle    时间: 2014-10-21 08:18
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包不存在
作者: zhappy    时间: 2014-10-21 08:24
先把包内的类import倒进来,在用这个类创建对象,应该会好一点吧。
作者: HM2014nuli    时间: 2014-10-21 08:27
本帖最后由 HM2014nuli 于 2014-10-21 08:29 编辑

先 javac -d . DemoB,在javac -d .DemoA, 再 javac -d.PackageDemo ,然后java pack.PackageDemo,就可以了
你的程序全不用改,先前我自己弄错了,抱歉
作者: Eagle    时间: 2014-10-21 08:32
HM2014nuli 发表于 2014-10-21 08:27
先 javac -d . DemoB,在javac -d .DemoA, 再 javac -d.PackageDemo ,然后java pack.PackageDemo,就可以了
...

不行的。。。可能在你的电脑上行。但是我的电脑上真的运行失败

作者: Eagle    时间: 2014-10-21 08:33
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
zhappy 发表于 2014-10-21 08:24
先把包内的类import倒进来,在用这个类创建对象,应该会好一点吧。

毕老师的视频能过。我自己编译就不行。。.你说的import。。。好像没学。。
作者: zhappy    时间: 2014-10-21 08:43
Eagle 发表于 2014-10-21 08:41
毕老师的视频能过。我自己编译就不行。。.你说的import。。。好像没学。。 ...

那就不知道了,我没看过前面视频。
作者: Eagle    时间: 2014-10-21 08:46
zhappy 发表于 2014-10-21 08:43
那就不知道了,我没看过前面视频。

恩呢。不过还是谢谢啦
作者: HM2014nuli    时间: 2014-10-21 08:47
本帖最后由 HM2014nuli 于 2014-10-21 08:49 编辑
Eagle 发表于 2014-10-21 08:33
都是一样的。编译失败,说是B包不存在

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


作者: Eagle    时间: 2014-10-21 08:49
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 个错误
作者: HM2014nuli    时间: 2014-10-21 08:58
Eagle 发表于 2014-10-21 08:49
我就是试过才回复你的、、、、
E:\java\day10>javac -d . DemoB.java

我想说,你这3个类是不是都在E:\java\day10>这里
作者: Eagle    时间: 2014-10-21 09:00
HM2014nuli 发表于 2014-10-21 08:58
我想说,你这3个类是不是都在E:\java\day10>这里

三个源文件都在这里。:o
作者: 小爷邱烙    时间: 2014-10-21 09:03
实验了好半天,终于模拟出你的错误了,真不容易,你classpath配错了或者没配,而java文件和class文件又存放到了不同的路径。
去检查你的classpath吧
作者: HM2014nuli    时间: 2014-10-21 09:03
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:06
本帖最后由 HM2014nuli 于 2014-10-21 09:11 编辑

我真心帮不了你了,我也是新人,我也无能为力,还忘记吃早餐了。。。我去。。。
作者: Eagle    时间: 2014-10-21 09:25
小爷邱烙 发表于 2014-10-21 09:03
实验了好半天,终于模拟出你的错误了,真不容易,你classpath配错了或者没配,而java文件和class文件又存放 ...

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

额。。:)。谢谢哥们了。找到问题了。是classpath配置错误了。。。。汗、、去吃饭吧。。以后北京能一起的话请你吃饭。哈哈
作者: HM2014nuli    时间: 2014-10-21 10:02
Eagle 发表于 2014-10-21 09:27
额。。。谢谢哥们了。找到问题了。是classpath配置错误了。。。。汗、、去吃饭吧。。以后北京能一起的 ...

昨天面试失败了,现在打算再申请一次,我申请的是深圳的,能帮则帮,不必言谢
作者: Eagle    时间: 2014-10-21 10:32
HM2014nuli 发表于 2014-10-21 10:02
昨天面试失败了,现在打算再申请一次,我申请的是深圳的,能帮则帮,不必言谢 ...

...0.0..额。。好吧。。哥们。记住,你的技术分不够啊。努力哦、
作者: HM2014nuli    时间: 2014-10-21 10:33
Eagle 发表于 2014-10-21 10:32
...0.0..额。。好吧。。哥们。记住,你的技术分不够啊。努力哦、

我国庆才知道有这个论坛。。。。伤不起
作者: Eagle    时间: 2014-10-21 11:49
HM2014nuli 发表于 2014-10-21 10:33
我国庆才知道有这个论坛。。。。伤不起

木有事,慢慢来,面包房子都会有的。哈哈
作者: 夕默    时间: 2014-10-21 12:03
HM2014nuli 发表于 2014-10-21 10:02
昨天面试失败了,现在打算再申请一次,我申请的是深圳的,能帮则帮,不必言谢 ...

你是51期吗???




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2