编程研究JAVA学习问题.doc_第1页
编程研究JAVA学习问题.doc_第2页
编程研究JAVA学习问题.doc_第3页
编程研究JAVA学习问题.doc_第4页
编程研究JAVA学习问题.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

package的使用:实验目的不知道包中是源文件,还是编译后的class类自动放入定义的包中。package的使用如下:/C1.java:package mypackage;public class C1int x;public void setx(int i) x = i;public void showx() System.out.println(x = + x);/C2.java:package mypackage.mypackage1;public class C2int y;public void sety(int i) y = i;public void showy() System.out.println(y = + y);/PackageTest.javaimport mypackage.C1;import mypackage.mypackage1.C2;class PackageTestpublic void main(String args) C1 obj = new C1(); obj.setx(456); obj.showx(); C2 obj1 = new C2(); obj1.sety(999); obj1.showy(); 在命令行下,编译三个文件的顺序为:C1,C2,PackageTest。但编译结果得到C1.class和C2.class同源文件在同一目录下,PackageTest.java编译出错如下:E:javaexamjavac PackageTest.javaPackageTest.java:1: 软件包 mypackage 不存在import mypackage.C1; PackageTest.java:2: 软件包 mypackage.mypackage1 不存在import mypackage.mypackage1.C2; PackageTest.java:7: 无法访问 C1错误的类文件: .C1.class类文件包含错误的类: mypackages.C1请删除该文件或确保该文件位于正确的类路径子目录中。 C1 obj = new C1(); 3 错误E:javaexam这是为什么?为什么没有产生程序中所要生成的包?问题 2 + 3:今天(11月15日),在学习使用java编制计算器时,竟出现了:在同一文件夹下的公共类不能互访。在不使用package时,编译的结果应该是默认在同一个包里,并且可以被同一包中的类访问,但现在竟出了“无法找到的符号”等信息。于是准备用简单的程序,模仿此用法进行测试:目的:通过编写简单的程序,研究在同一包中的公共类是否可以互相访问。方式:计划编制一个Student类,然后再另一个类中使用此类。Student类定义文件:Student.javapublic class StudentString name;int age;public Student() name = NONAME; age = 0;public Student(String name, int age) = name; this.age = age;public void printInfo() System.out.println(t + name + t + age);/*用于测试此类是否正确,确定正确后删除*/public static void main(String args) Student stu1 = new Student(jink2005, 21); stu1.printInfo();但,当编译后,运行时竟出现如下错误:E:javamyprostudentsjavac Student.javaE:javamyprostudentsjava StudentException in thread main java.lang.NoClassDefFoundError: Student中途又遇猛虎,在百度中提问,内容如下:/question/15315414.html遇到了:java.lang.NoClassDefFoundError,搜索一些答案,都不行。 原来可以运行的程序现在都出现此问题,谢大家指点: public class Hi public static void main(String args) System.out.println(Hi!); 我用此程序测试,不行: 我的配置: Hi.java位于:E:javamyprostudents中 E:javamyprostudentsecho %JAVA_HOME% D:Program FilesJavajdk1.5.0_09 E:javamyprostudentsecho %classpath% D:Program FilesJavajdk1.5.0_09libmysql-connector-java-5.0.4-bin.jar;D:Prog ram FilesJavajdk1.5.0_09libtools.jar E:javamyprostudentspath PATH=D:Program FilesJavajdk1.5.0_09bin; 编译通过,运行仍出现java.lang.NoClassDefFoundError 这是怎么回事?from:/xkforever/archive/2006/10/13/1333792.aspxNO.1 不含包层次的HelloWorld.javapublic classHelloWorldpublic static voidmain(String args)System.out.println(Hello World!);保存在E:javasrc下,使用javac命令编译:E:javasrcjavac HelloWorld.java运行:E:javasrcjava HelloWorld屏幕打印出:Hello World!b初学者常犯的错误/b1. 运行时,带了.class后缀如果你试图使用如下命令:E:javasrcjava HelloWorld.class系统会误认为你运行的是HelloWorld包下的名为class的类文件,会到系统的CLASSPATH下(一般都包括当前目录)企图寻找HelloWorld.class.class这样的类,这样的类当然不存在了;并且也不可能存在,因为class是关键字,不能作为一个类的名字。所以会报如下错误信息:Exception in thread main java.lang.NoClassDefFoundError: HelloWorld/class2. 文件名大小写错误对于像Windows这样的系统,编译时可以不关心大小写。比如编译HelloWorld.java时,也可以使用:E:javasrcjavac helloworld.java也可以编译通过,但产生的类文件仍然是和源文件相符的:HelloWorld.class。但在运行时一定要注意大小写,比如试图使用如下命令运行:E:javasrcjava helloworld将报类似于1中的错误:Exception in thread main java.lang.NoClassDefFoundError: helloworld (wrong name: HelloWorld) No.2 包含包层次的HelloWorld.java比如上面的HelloWorld.java修改如下:packageorg.javaresearch;public classHelloWorld public static voidmain(String args) System.out.println(Hello World!);编译时有两种方法1. 直接编译E:javasrcjavac HelloWorld.java此时在当前目录下输出HelloWorld.class。此时,运行不能使用上面相同的方法,使用:E:javasrcjava HelloWorld运行时,出现如下错误:Exception in thread main java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/javaresearch/HelloWorld)从上述错误信息你也可以看到,系统可以找到HelloWorld类(因为当前路径包含在CLASSPATH中,具体为什么会提示wrong name,有兴趣的朋友参见Java语言规范),但这个类属于org.javaresearch包。所以,你要做的就是按照上述包层次,相应的创建目录层次,把上面生成的HelloWorld.class放到E:javasrcorgjavaresearch目录下。运行:E:javasrc java org.javaresearch.HelloWorld系统打印出:Hello World!这儿要注意的是,不能使用java orgjavaresearchHelloWorld来运行,此时同样会出现如下错误:Exception in thread main java.lang.NoClassDefFoundError:orgjavaresearchHelloWorld (wrong name: org/javaresearch/HelloWorld)哈哈,是不是有点怪怪的,那没办法。以后对Java的包有更深的认识时,就会明白了。问题一解答:2. 使用 -d 编译选项是不是觉得上面的编译方法有点麻烦,能不能自动在当前路径(或任意指定的路径)下生成包层次呢?有!使用-d 编译选项就能做到。E:javasrc javac -d . HelloWorld.java此时,在当前目录下就生成了一个orgjavaresearch目录,并且输出的.class文件也在里面。运行:E:javasrc java org.javaresearch.HelloWorld系统打印:Hello World!如果你想把生成的类文件集中存放在一个目录中,比如:E:javaclasses下,那么你首先创建这个目录,然后编译时:E:javasrc javac -d E:javaclasses HelloWorld.java就可以把生成的类文件放到E:javaclasses目录下,并且按照包层次相应的创建目录路径。你可以在E:javaclassesorgjavaresearch下找到HelloWorld.class文件。此时使用如下命令可以正确运行(注意如果要用到其它类,请在CLASSPATH中设好):E:javaclasses java org.javaresearch.HelloWorld 问题 2 + 3解答(1):/sk8boy/archive/2006/09/15/16229.htmljava.lang.NoClassDefFoundError错误一个关于classpath设置的问题 前天给学生上课,想给大家演示一个JDBC的小程序的调试过程。开始一切都十分顺利,通过修改拼写错误和语法错误,程序可以正常编译了。下面的步骤就是运行程序显示结果了。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论