请问,应该怎样解决?
下面是ComplexNumber.java和PassParemter.java的部分代码,ComplexNumber.java已经编译过了。
package book.oo;
import book.oo.ComplexNumber;
public class PassParamter {
public PassParamter() {
}
public void methodA(ComplexNumber comNum) {
// comNum这个引用指向了一个新new出来的对象。
comNum = new ComplexNumber(1, 2);
}
......
}
package book.oo;
public class ComplexNumber implements Cloneable{
/** 复数的实部 */
private double realPart;
/** 复数的虚部 */
private double imaginaryPart;
/** 默认构造函数 */
public ComplexNumber() {
this.realPart = 0.0;
this.imaginaryPart = 0.0;
}
/**
* 构造函数
* @param a 实部
* @param b 虚部
*/
public ComplexNumber(double a, double b) {
this.realPart = a;
this.imaginaryPart = b;
}
......
}
之前编译和执行ComplexNumber.java时,加了包语句后,我在使用javac和java时要转到不同目录去,编译时要到源文件所在目录,执行时要退回到包含包的目录去,我弄不明白为什么这样?
在本次编译的java范围内
追答最好把目录和文件结构还有你执行的编译命令描述一下
追问C:\Documents and Settings\Administrator\My Documents\java\book\oo
存放了两个java源文件:ComplexNumber.java和PassParamter.java
1. 首先,我通过cd命令转到当前目录下,即C:\Documents and Settings\Administrator\My Documents\java\book\oo
2. 输入javac ComplexNumber.java成功编译,编译后的ComplexNumber.class在当前目录下。
3. 输入javac PassParamter.java出现编译时错误,提示找不到符号ComplexNumber
javac -cp . PassParamter.java
也可以直接javac *.java
javac -cp . PassParamter.java不行
javac *.java可以
还想问一问,我对这里面的原理不太明白。
我自己建了目录book/oo,把两个源文件放到里面去的,这是不是不合理?
如果用命令,建议不要自己根据package结构建文件夹
编译时用javac -d . *.java 自动生成package目录
很感谢!
本回答被提问者和网友采纳