日期:2014-05-20  浏览次数:20686 次

关于java包的不解。。。。
1.一个编辑单元(。Java)文件,假设其中包含一个public类和2个别的类,用javac编译后是不是会生成一个public类。class、两个另外的类。class?
2.那个【package 包名;】语句是不是只是一种表示,表示这个。java文件在包名里边,而实际上不在这个包里也可以?书上说
虚拟机运行时是会查系统变量 为什么我的系统变量中那个classpath是f:\Java;但我电脑里f盘却没Java这个文件夹 ?

------解决方案--------------------
1.一个编辑单元(。Java)文件,假设其中包含一个public类和2个别的类,用javac编译后是不是会生成一个public类。class、两个另外的类。class?
会的

2.那个【package 包名;】语句是不是只是一种表示,表示这个。java文件在包名里边,而实际上不在这个包里也可以?
可以,不过使用这个类的时候可能会报找不到类,因为该.java文件被编成成.class的时候,class里是带有包信息的,也就是说class文件你可以随便拷贝到任何文件夹,但是不保证class能正常使用

书上说
虚拟机运行时是会查系统变量 为什么我的系统变量中那个classpath是f:\Java;但我电脑里f盘却没Java这个文件夹 ?
你这个系统变量是怎么来的?可以自己修改这个系统环境变量

------解决方案--------------------
1 是
2 IDE里面恐怕你怎么写package,java文件就必须在那个路径下,这也是提倡的做法
如果你非得搞这些。。。

徒手的话,如果你java随便找个地方写了,那么你在编译时需要加上编译选项 比如

javac -d . HelloWorld.java

这样,编译器就会把.class文件扔到对应的路径中

然后再运行,比如

java a.b.HelloWorld


------解决方案--------------------
虚拟机运行时是会查系统变量 为什么我的系统变量中那个classpath是f:\Java;但我电脑里f盘却没Java这个文件夹 ?
关于这个问题,classpath前面是不是有一个. 这个点表示当前目录。
------解决方案--------------------
这个可以参考操作系统的搜索路径
classpath也是一样,每个;表示一个搜索路径
jvm在每个搜索路径中寻找匹配的程序并执行
------解决方案--------------------
javac看的是你的PATH环境变量
你看看PATH中有没有你的JDK路径/bin

------解决方案--------------------
探讨

引用:

虚拟机运行时是会查系统变量 为什么我的系统变量中那个classpath是f:\Java;但我电脑里f盘却没Java这个文件夹 ?
关于这个问题,classpath前面是不是有一个. 这个点表示当前目录。

那个点表示当前目录 。。。。什么当前目录啊? 我昨天查了资料 可是 上边也像你这么说 就是没说这当前目录是啥 这点指的是安装jd……

------解决方案--------------------
当前目录就是你当前所在的目录,比如说你有在aa文件夹下面有bb.java文件,你在控制台下进入aa,然后敲javac bb.java就会编译出相应的class文件来,这些class文件会放在aa里,然后你敲java bb,虚拟机会从当前目录开始找class文件,这个当前目录就是指aa

好像是这样