网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.继承初始化.
.学以致用:写一个属于自己的Rss.
.Java设计模式之修饰模式篇(1).
.利用ThreadLocal记录日志.
.关于分页问题(ZT).
.Java中的this关键字.
.提高Java程序内存效率.
.Apache Tomcat 发布5.5.12 Stabl.
.DiskSuite做raid0的note.
.Java初学者需掌握的30个基本概念.
.Java技巧:简化JDBC的开发.
.Webwork 和 spring 的整合.
.Java Socket编程(二)-3.
.Motorola V180,V501,V600,C650等.
.深入探讨SQL Server 2000对XML的.
.File 对象.
.用JNDI建立支持目录的应用程序.
.初学者入门经典:Java环境配置大.
.预装载以及JavaScript Image()对.
.Swing 常用的 Package.

如何运行Java程序和设置CLASSPAT

发表日期:2008-1-5



  如何运行Java和CLASSPATH环境变量的设置是学习和使用JAVA中最基本的问题,本不应在此赘述。但近来不少人在论坛上提出的问题却与此有关,我平时碰到的一些初学者也往往在这个问题上卡了壳,因此写了这篇小东西,希望能对一些初学者有用。
  
  我们都知道要运行一个JAVA程序要经历编写原程序,编译和运行三个步骤。其中编译要用到javac命令,而运行则要用到java命令。比如有一个HelloWorld的类,保存在HelloWorld.java文件中。编译时用:
  javac HelloWorld.java
  生成HelloWorld.class文件,运行时要用:
  java HelloWorld
  
  这里要注重javac与java两个命令的重要差别。javac需要的参数是JAVA原文件的文件名,因此.java的后缀是不能少的,而javac需要的参数是JAVA的类名,所以绝对不能加.class后缀。这样以下两种用法都是错误的:
  javac HelloWorld (Wrong!!)
  java HelloWorld.class (Wrong!!)
  
  又因为Windows的文件系统对文件名的大小写是不敏感的,因此在编译时给出的原文件名大小写没有关系,但java命令要的是类名,而在JAVA中所有的标识符包括类名都是大小写敏感的,因此在用java命令时,类名的大小写必须和原文件中定义的类名完全一致。注重下列命令用法:
  javac helloworld.java (Corrent!!)
  java HelloWorld (Wrong!!)
  
  既然用java命令运行JAVA程序时给出的是类名而不是文件名,那么java又是到那里去找到要运行的类的呢?这就要用到CLASSPATH了。即可以通过设置CLASSPATH环境变量,又可以通过-cp命令行参数指示java到哪里去查找类。其实javac也是需要CLASSPATH来指明编译时到哪里查找用到的类的定义的。假如CLASSPATH设定不正确,运行时就会碰到这样的错误:
  Exception in thread "main" java.lang.NoClassDefFoundError: <类名>
  而碰到这样的错误原因只可能是两个:
  1. CLASSPATH设定不正确;
  2. 类名打错。初学者最常见的是大小写错。
  
  CLASSPATH是一组互相间由";"隔开的目录,zip文件或jar文件。ZIP和JAR文件一般是用来引入一些第三方的类库,这些文件中也都包含了JAVA的类。这些目录、ZIP文件或JAR文件一般都是用绝对路径,假如用相对路径,那么在运行时就会解释为相对于当前路径。
  
  在Win9x系统中,一般可以通过在autoexec.bat中加入这样的语句来定义全局的CLASSPATH(假设你把自己写的类放在c:\myjava目录下)
  set CLASSPATH=c:\myjava
  Win9x操作系统需要重起机器,这个设置才能起作用。
  假如是Windows2000,可以在控制面板\系统\高级\环境变量中新建CLASSPATH环境变量。Windows2000不需要重起机器,但对设置之前打开的DOS命令窗口没有效果。
  要检查CLASSPATH设置是否正确,可以通过在DOS提示符下大打入以下命令:
  echo %CLASSPATH%
  
  假如要用-cp命令参数,则可以这样:
  java -cp c:\myjava .....
  
  下面是天边浪子与12237558鲲鹏的一段对话,希望能对初学者有点帮助~
  
  (2001-06-08 17:01:06) 天边浪子
  C:\jdk
  这是我JDK的安装目录!
  你帮我写一个autoexec.bat 和Config.sys好吗?
  鲲鹏:
  与config.sys无关.
  要害是你的类放在什么路径.
  
  天边浪子:我写的在c:\java下面!
  
  鲲鹏:
  autoexec.bat:
  set PATH=%PATH%;c:\jdk\bin
  set CLASSPATH=c:\java
  
  天边浪子:那原来的PATH还用改吗?
  
  鲲鹏:原来的PATH是怎样的?
  
  天边浪子:哦,我加在原来";"的后面了~
  
  鲲鹏:这样应该也不错呀。
  
  天边浪子:还是出错了~
  
  鲲鹏:你把提示发过来
  
  天边浪子:
  C:\java>java helloworldapp
  Exception in thread "main" java.lang.NoClassDefFoundError: helloworldapp (wrong
  name: HelloWorldApp)
   at java.lang.ClassLoader.defineClass0(Native Method)
   at java.lang.ClassLoader.defineClass(Unknown Source)
   at java.security.SecureClassLoader.defineClass(Unknown Source)
   at java.net.URLClassLoader.defineClass(Unknown So
      这只是一半,还有一半没有发过来呢~
  鲲鹏:
  执行javac helloworld.java时,javac将通过文件系统查找helloworld.java这个文件,因为文件系统是大小写不分的,所以helloworld.java 和HelloWorld.java是一样的。
  执行java helloworld时,java自己查找helloworld这个类,即使它通过文件系统找到了HelloWorld.class这个类文件,但它会把类文件中的类名和你给出的类名比较,这个比较是区分大小写的。
  我没有说错。
  在执行javac时,给出的文件名大小写是没有关系的,
  但执行java时,给出的类名大小写也必须正确。
上一篇:Java教程 人气:541
下一篇:怎样学好JAVA的一些总结 人气:1237
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐