黑马程序员技术交流社区
标题:
关于包中访问的问题
[打印本页]
作者:
何明辉
时间:
2012-9-3 11:23
标题:
关于包中访问的问题
本帖最后由 何明辉 于 2012-9-4 19:31 编辑
package a1.b1.c1;
class PackageDemo
{
public static void main(String[] args)
{
System.out.println("OK!");
}
}
上面的程序是在当前目录下建立a1\b1\c1包。
编译后在c1包下生成PackageDemo.class文件。
当将classPath的值设置到c1目录下时,在去运行该文件时出错。
没有设置前
在dos下输入java a1.b1.c1.PackageDemo能运行
但是设置classPath的值为c1目录下时
在dos下输入java PackageDemo却不能运行。
郁闷了半天,问题出现在哪儿了,
作者:
孙岳
时间:
2012-9-3 11:32
估计是环境变量设置出现问题了,你最好把设置过程贴上来。
作者:
孙沛
时间:
2012-9-3 13:13
首先你要明白包不只是文件夹,它是一个装类的标识
PackageDemo是a1.b1.c1包的一部分,必须这个类必须和他的包名一起使用,所以你不能直接执行PackageDemo
作者:
舒远
时间:
2012-9-4 12:07
你的类是有包语句的,那么执行的时候就必须带着包名:java a1.b1.c1.PakageDemo
如果你的classpath=xxx\a1\b1\c1,结尾没有带分号或者开头没有带“.”,则虚拟机启动后不会再当前路径下找class文件。
这时你执行java a1.b1.c1.PakageDemo肯定会出错,这句代码实际上虚拟机是去xxx\a1\b1\c1\a1\b1\c1这样的路径中找class文件。显然不存在这样的路径。所以执行出错。
如果你在xxx\a1\b1\c1下面建立的目录结构如下:xxx\a1\b1\c1\a1\b1\c1,然后把你的类:xxx\a1\b1\c1\PackageDemo.class文件放到xxx\a1\b1\c1\a1\b1\c1下面,在执行java a1.b1.c1.PakageDemo语句的时候就不会错误了。
总结:你的路径没有理解正确。解决方法就是设置classpath=.;xxx\a1\b1\c1或者classpath=xxx\a1\b1\c1;这样就能解决问题。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2