错误分析与问题解答
===================================================================== 错误信息: >javac a.java Note:a.java uses or overrides a deprecated API. Note:Recomlile with -deprecation for details. 错误分析: 程序中包含了不提倡使用的类、 属性或方法, 因为已经有新的 API 替代了这些老的 API。 该信息只是一个提示性信息, 一般并不影响程序的运行, 但在以后的标本中可能就不支持了。 最好还是用新的 API 替代旧的 API。在 API
文档中,对这类过时的 API 都有说明,并给出 对应的新 API。 出现这类错误,可在编译时加上“-deprecation”选项,编译便可具体指出使用了旧 API 的语句及位置。 例如: javac -deprecation a.java a.java:6:warning:getDate() in java.util.Date has been deprecated System.out.println(d.getDate)); 1 warning 该例说明 Date 类的 getDate()方法属过时方法。从
文档中可以查出,可用 Calendar.get 方法替代。 ===================================================================== 错误信息: > javac a.java class Hello is public,should be declared in a file named Hello.java. public class Hello 错误分析: 如果一个.java 文件中包含 public 类的定义,该文件名必须与类名完全相同。该规定也 同时说明了一个问题:即一个.java 文件中只能包含一个 public 类定义。如果在你的程序中 有多个 public 类需要定义,必须将它们分别放在各自的文件中。 例如本例中,源文件中定义了一个 public 类 Hello,所以源文件名就必须是 Hello.java 而 不能是 a.java 。 ===================================================================== 错误信息: Exception in thread "main" java.lang.NoClassDefFoundError: ... 错误分析: classpath 变量中没有包含当前目录或类文件所在的目录。 ===================================================================== 错误信息: javac booktest.java booktest.java:13:cannot resolve symbol symbol : constructor BookCard(int,java.lang.String.book[]) location: class BookCard BookCard bk=new BookCard(num,name,books2);
错误分析: 问题出现在 BookCard 类的构造函数。该类中的构造函数定义如下: public class BookCard { private int rno; private String rname; private book[] books; void BookCard(int p1,String p2,book[] p3) { rno=p1; rname=p2; books=p3; } ... 构造函数前不能有 void ===================================================================== 问题: 老师,我将 Book 类和 BookCard 类分别定义为 public, 并放在两个文件中, 并且都加了 一个 package 语句: package p , 并编了一个测试程序 booktest.java,其中加上 import p.*语句, 放在当前目录下. 开始编译运行过程, 如下: javac -d . Book.java javac -d . BookCard.java 均通过, 并生成了 p 文件夹, 查看里面有 Book.class 和 BookCard.class 两个文件. 然后在当前目录下运行: javac boo
ktest.java 却出错, 信息为: 找不到 Book.class 和 BookCard.class 注:我的 classpath 设置为: set CLASSPATH=.;D:\program files\jdk.2.2\lib\dt.jar;D:\program files\jdk.2.2\lib\tools.jar % CLASSPATH, 并且以前引用
系统类库时都没有问题. 解答: 1.类是 public 还不够,方法(包括构造方法)也必须是 public 的,才可以被包外调用。 2.包中类的源程序不要与调用包的源程序放在同一个目录下。 =====================================================================
问题: 我用了 Point 类的 setLocation(x,y)和 getX()、 getY()两个方法, 出现一个很奇怪的问题: 明 明声明的实参 x y 为 double 型的,但是 setLocation(x,y)后,再用 getX()、getY()返回其值,,结果 把我原来的输