错误分析与问题解答.doc
《错误分析与问题解答.doc》由会员分享,可在线阅读,更多相关《错误分析与问题解答.doc(5页珍藏版)》请在咨信网上搜索。
错误分析与问题解答 ===================================================================== 错误信息: >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 booktest.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()返回其值,,结果把我原来的输入给四舍五入掉了, 查了半天也没找到原因... 解答: Point类的两个属性x和y都是整型的。构造函数就只有整型参数。setLoction方法的参数及getX和getY的返回值只是以浮点数的形式表示点的坐标,但Point的属性决定了实际值。 代码实例: import java.awt.Point; public class test { public static void main (String args[]) { Point pt1=new Point(1,2); pt1.setLocation(1.23,2.78); System.out.println(pt1.getX()); System.out.println(pt1.getY()); } // end of main method } // end of main class 输出: 1.0 3.0 ===================================================================== 问题: public class a{ public static void main(String[] args){ String s1,s2 ; s1="abc";s2="abc"; if (s1==s2) System.out.println("-----1------"); s1=new String("abc"); s2=new String("abc"); if (s1==s2) System.out.println("-----2------"); if(s1.equals(s2)) System.out.println("-----3-----"); } } 其中: if (s1==s2) System.out.println("-----2------"); 为什么这里s1不等s2呢? 而其他就相等呢? 解答: 第一个是常量形式,用一个内存单元保存 第二种情况是创建了两个字符串对象,虽然内容一样,但地址不一样,而s1和s2分别保 存了这两个地址,所以s1和s2不等. ===================================================================== 问题1: 为什么程序执行时,当方法访问到属性时,就出现空指针错误? class BookCard { int rno; String rname; Vector bBook; BookCard(int a,String b,Vector c) { int rno=a; String rname=b; Vector bBook=c; } … } 在构造函数中,对三个属性又进行了一次定义,相当于定义了三个局部变量,结果是对三个局部变量赋值,而并没有对三个属性赋值。所以下面的各方法中凡是用到bBook等属性的都会出现空指针错误。 正确的构造函数是: BookCard(int a,String b,Vector c) { rno=a; rname=b; bBook=c; } ===================================================================== 问题: 我在做第五次作业时,不能执行自己建的包中的类,请问老师是为什么? 执行过程如下: 我将Mystack等四个类加入stack包中 程序开头写: package stack; 测试文件写成一个.java,为了可以调用stack包中的四个类,也将它加入stack包中, 程序开头写: package stack; 编译时出错: I:\>javac -d . Mystack.java I:\>javac -d . TestMystack.java I:\>java TestMystack -classpath .\stack Exception in thread "main" java.lang.NoClassDefFoundError: TestMystack ----------------------- 如果我进入stack文件夹中执行TestMystack.class,明明文件存在,也不能执行 I:\>cd stack I:\stack>java TestMystack Exception in thread "main" java.lang.NoClassDefFoundError: TestMystack (wrong na me: stack/TestMystack) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at .URLClassLoader.defineClass(Unknown Source) at .URLClassLoader.access$100(Unknown Source) at .URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at .URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) 解答: 进入stack文件夹中执行TestMystack.class是不合理的,因为TestMystack程序中的package语句指定了有名的当前包(而不是当前目录的无名包了)。 要将测试程序与包分开,具体做法是: ① javac -d .Mystack.java Mystack.class会出现在当前目录的stack目录下。 ②还要注意:不要将放入包中的那些类的源程序(如Mystack.java)与测试程序放在一起。例如:可以在当前目录下建一个source目录,然后将Mystack.java移到source目录下。 ③将TestMystack.java中的package stack 改为import stack ,然后编译: javac TestMystack.java 会在当前目录下生成TestMystack.class文件 ④执行 java TestMystack 注意:classpath要包括当前目录,因为在该例中TestMystack.class类文件和程序中打开的stack包都在当前目录下。 总之,要将使用包的程序(如测试程序)和包分开,和包中的类的源程序分开,不要搅到一起。 =====================================================================- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 错误 分析 问题解答
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【pc****0】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【pc****0】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【pc****0】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【pc****0】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文