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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何明辉 中级黑马   /  2012-9-3 11:23  /  2001 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何明辉 于 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却不能运行。
郁闷了半天,问题出现在哪儿了,

3 个回复

倒序浏览
估计是环境变量设置出现问题了,你最好把设置过程贴上来。
回复 使用道具 举报
首先你要明白包不只是文件夹,它是一个装类的标识
PackageDemo是a1.b1.c1包的一部分,必须这个类必须和他的包名一起使用,所以你不能直接执行PackageDemo
回复 使用道具 举报
你的类是有包语句的,那么执行的时候就必须带着包名: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;这样就能解决问题。

评分

参与人数 1技术分 +1 收起 理由
田建 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马