很奇怪在我的电脑上编译的时候显示的错误和你的不一样,我的电脑上编译是提示如下错误: D:\Develope\JAVA\Other\csdn\csdn\Common.java:2: duplicate class: pkg1.pkg2.Common public interface Common ^ D:\Develope\JAVA\Other\csdn\csdn\ComputerTime.java:18: cannot access Common bad class file: D:\Develope\JAVA\Other\csdn\csdn\Common.java file does not contain class Common Please remove or make sure it appears in the correct subdirectory of the classpath. Common d=(Common) Class.forName("pkg1."+args[0]).newInstance(); ^ 2 errors而且我也没有分开编译,只是把ComputerTime.java里的import pkg1.pkg2.*改成了import pkg1.pkg2.Common,就一切正常可以运行了,我的运行结果如下: ----------------- java ComputerTime Plane 20 10 15 交通工具:Plane 参数A:20 参数B:10 参数C:15 平均速度: 45.0 km/h 运行时间: 22.22222222222222小时 ----------------- 真是很奇怪哦。
reason: ComputerTime needs Common.class, and compiler find Common.java 1. javac -d . Common.java 2. javac -d . Car007.java Plane.java3. then move Common.java, Car007.java and Plane.java to /src folder4. javac ComputerTime.javaOK.Better to use ANT
javac -d . Car007.java Plane.java
javac ComputerTime.java2 complier error:
Common d=(Common) Class.forName("pkg1."+args[0]).newInstance();
inconvertible types.
目录和文件都有。各位可以把上面的代码运行试试!
比如有
Car007.java
*********************************
package pkg1;
那么Car007.java就应该放在pkg1下面
以次类推。编译的时候按照依赖情况,逐个编译。
文件A依赖B,那么B先编译。
编译过程中的-classpath设置随着文件不同而变化。最好用ant写一个编译脚本。
D:\Develope\JAVA\Other\csdn\csdn\Common.java:2: duplicate class: pkg1.pkg2.Common
public interface Common
^
D:\Develope\JAVA\Other\csdn\csdn\ComputerTime.java:18: cannot access Common
bad class file: D:\Develope\JAVA\Other\csdn\csdn\Common.java
file does not contain class Common
Please remove or make sure it appears in the correct subdirectory of the classpath.
Common d=(Common) Class.forName("pkg1."+args[0]).newInstance();
^
2 errors而且我也没有分开编译,只是把ComputerTime.java里的import pkg1.pkg2.*改成了import pkg1.pkg2.Common,就一切正常可以运行了,我的运行结果如下:
-----------------
java ComputerTime Plane 20 10 15
交通工具:Plane
参数A:20
参数B:10
参数C:15
平均速度: 45.0 km/h
运行时间: 22.22222222222222小时
-----------------
真是很奇怪哦。
ComputerTime needs Common.class, and compiler find Common.java
1. javac -d . Common.java
2. javac -d . Car007.java Plane.java3. then move Common.java, Car007.java and Plane.java to /src folder4. javac ComputerTime.javaOK.Better to use ANT