首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java 命令会和刚执行的 javac 命令有关吗?解决思路

2012-01-10 
java 命令会和刚执行的 javac 命令有关吗?若在one.java中有Test类。在two.java中也有Test类。javaTest是解释

java 命令会和刚执行的 javac 命令有关吗?
若在   one.java   中有   Test   类。在two.java   中也有   Test   类。java   Test   是解释哪个类?

demo:

若先   javac   one.java   再   java   Test   。是解释   one   文件中的   Test   类。

若先   javac   two.java   再   java   Test   。是解释   two   文件中的   Test   类。

但   javac   是编译器,把   .java   文件编译成   .class   文件   ;而   java   是解释器,解释的是类,并不是解释   .class   文件。那为什么   java   命令会和刚执行的   javac   命令有关?

[解决办法]
楼主对javac和java的理解稍微有点问题。

java命令是编译没错,它会把.java文件编译成class文件,一个java文件中每个class和interface的定义都会分别转换为一个.class文件。
如一个java文件中包含两个类的定义,A和B,则编译之后会生成A.class和B.class

java命令是解释执行“类”,这个“类”就是指.class文件。比如java Test,实际上会去找Test.class文件,如果找不到就会出错。

如果两个文件中都包含Test类的定义,那么肯定不能编译在同一个文件夹下。想一想,操作系统允许在同一个文件夹下放置两个名都为Test.class的文件吗?
[解决办法]
而 java 是解释器,解释的是类,并不是解释 .class 文件
=======================================================
那解释什么?java就去执行.class,java这个命令不会管你的.java文件的
[解决办法]
不好意思,写错了,应该是:
javac one.java //生成两个文件:one.class Test.class
javac two.java //生成两个文件:two.class Test.class(文件名相同,把上一个覆盖掉了)
java Test //当然执行的是two文件中的Test。

[解决办法]
在java中要产生一个.class文件,如果文件已经存在,则会覆盖掉原文件!

你可以对比 one.java 和 two.java 在 编译以后的Test.java 文件(用 UE看)就会明白,

热点排行