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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王海宇 黑马帝   /  2012-9-19 17:00  /  4047 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王海宇 于 2012-9-19 22:38 编辑

请教一下大家,我有一个带有包名的类位于D:\Users\Along\workspace\Dom4JTest\bin\along\exam\ui\Main.class,包名就是along\exam\ui  我想用命令提示符运行这个类。而且,命令提示符的当前工作目录必须是C盘,请问怎样才能运行这个类呢?谢谢大家的指教
我的意思就是可否像执行jar包那样,无论当前的工作目录是什么,都可以使用类似 java 类的绝对路径\类名 来执行(例如:当前的工作目录是C:\,使用java D:\Users\Along\workspace\Dom4JTest\bin\along\exam\ui\Main 来执行,我测试过这样执行会报错,说找不到类),而不需要设置环境变量和更改工作目录,请问大家可以这样做吗?如果可以的话那应该怎样写执行语句呢?我目前所掌握的放法都只能在设置好工作目录或者环境变量的前提下通过 java  包名\类名  来执行,无法直接通过java 类的绝对路径\类名来执行

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
设置临时变量。set classpath=c:\

点评

哥们,你的方法可行。但是要设置classpath比较麻烦。请问还有没有更简单一些的方法呢?意思就是在任何工作目录下使用java 路径名\类名 就可以运行  发表于 2012-9-19 18:04
回复 使用道具 举报
先进入D:盘:输入D:即可
d:\1.png
然后进入该目录:输入cd D:\Users\Along\workspace\Dom4JTest\bin\along\exam\ui
d:\2.png
最后输入 java Main即可
d:\3.png

点评

哥们,谢谢你,不过请看清我的题目要求,当前的工作目录必须是C:\ 。而且我这个是带有包名的类,在运行的时候应该在类的前面加上包名才能运吧  发表于 2012-9-19 17:39
回复 使用道具 举报
张小龙 发表于 2012-9-19 17:12
先进入D:盘:输入D:即可

然后进入该目录:输入cd D:\Users\Along\workspace\Dom4JTest\bin\along\exam\u ...

这图片怎么不能上传呢...
回复 使用道具 举报
还请大家指教,谢谢~
回复 使用道具 举报
本帖最后由 王海宇 于 2012-9-19 23:15 编辑

原来Java虚拟机在执行Java class程序(不是执行jar包)的时候,只会依据环境变量中classpath变量配置的参数挨个目录去查找给定的要执行的Java程序(classpath中一个很重要的参数“.”,代表Java虚拟机的当前工作目录。由于它的存在,我们才可以不用执行每个Java class文件都需要配置环境变量,而只需要将Java虚拟机的工作目录切换到class文件顶层包所在目录,就可以运行class文件了)。在命令行窗口中传递给java命令的参数全部会被当成包名和类名,稍有疏忽(例如少写了包名或把路径当成了包名)就会抛出找不到类的异常。这样的话要通过命令提示符窗口执行带有包名的Java class文件,只需要(好像也只能)将环境变量配置正确,然后传递给java命令 类的完全包名和类名就可以了。同理,在程序中引用的第三方开发包,也需要将他们的存储目录(需要是带有jar包完整名称的绝对路径名)映射到环境变量中去或者将jar包里面的内容解压到Java虚拟机的当前工作目录,否则程序执行过程中,若用到这些第三方的工具类,也可能会抛出找不到类的异常。以前用eclipse开发调试程序,从来不知道有这些问题,现在用手工编译并运行Java程序,才发现有多麻烦。。。在实际应用中都是将class文件打包成jar包来执行的,只需要将“-jar”和jar包所在的相对或者绝对路径传递给java命令就可以执行了。但是若程序中引用了第三方jar包,还是需要解决加载类路径的问题。。纯属个人摸索了一晚上的愚见,不正确的地方,还请大家指正
回复 使用道具 举报
王海宇 黑马帝 2012-9-20 10:49:33
7#
又摸索了一早晨,我又来补充了,在执行class文件的时候,是可以不用配置系统环境变量和设置Java虚拟机的工作目录的。方法就是紧跟在java命令后面增加一个可选项:
-cp class文件顶级包所在的相对或绝对目录。还是以问题中的条件为例,Java虚拟机的工作空间可以任意,将执行语句写成
   java -cp d:\Users\Along\workspace\Dom4JTest\bin along.exam.ui.Main     这样就可以在不设置系统环境变量和更改Java虚拟机工作空间的条件下执行class文件了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马