导读:

如何运行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命令时,类名的大小写必须和原文件中定义的类名完全一致。注意下列命令用法:

bbs.bitsCN.com中国网管论坛

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

DL@bitsCN_com网管软件下载

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是怎样的?

天涯浪子:哦,我加在原来";"的后面了~

鲲鹏:这样应该也不错呀。

[bitsCN_com]

天涯浪子:还是出错了~

鲲鹏:你把提示发过来

天涯浪子:

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时,给出的类名大小写也必须正确。 [bitsCN_com]

本文转自

http://www.bitscn.com/java/base/200605/20504.html

pat上写java程序_如何运行Java程序和设置CLASSPAT相关推荐

  1. java中如何运行小程序_一起学java(一)——运行第一个小程序

    接下来的一段时间内会更新一起学java系列,喜欢的关注一下我吧.微信公众号:什么都不懂的大佬:初学,有错误的地方请大家多多指教. ---------------分割线-------------- 一. ...

  2. 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序

    编译运行一个java程序 Have you ever thought if it's possible to compile and run a java program from another j ...

  3. java代码耗尽内存_为什么运行Java应用程序的计算机几乎耗尽了物理内存,但仍然可以运行数周...

    我有一个Java应用程序,该应用程序部署在两台计算机上,并根据指标(包括JMC)判断它们都几乎耗尽了内存,并且持续了很长时间.但是,这些应用程序可以正常运行,并且不会发生OutOfMemory错误. ...

  4. 【java】使用cmd运行java程序

    做作业时,有这样一道题: 在命令行状态下,如果命令"java Hello"成功运行了程序并打印出Hello world,那么下面哪个叙述是错误的?(  ) A) 当前目录中一定存在 ...

  5. 红牛农场java代码_实验题目 Java语言概述.doc

    实验题目 Java语言概述 实验一 Java语言概述 [实验目的] 1.掌握开发Java应用程序的三个步骤:编写源文件.编译源文件和运行应用程序. 2.熟悉Java应用程序的基本结构,并能联合编译应用 ...

  6. mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)

    对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优 ...

  7. java的class怎么直接运行_如何运行Java程序和设置CLASSPAT | 中国网管联盟

    如何运行JAVA和CLASSPATH环境变量的设置是学习和使用JAVA中最基本的问题,本不应在此赘述.但近来不少人在论坛上提出的问题却与此有关,我平时碰到的一些初学者也往往在这个问题上卡了壳,因此写了 ...

  8. java mapreduce程序_简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行...

    [TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...

  9. 定时执行java程序_如何让Java程序定时运行

    由于项目开发的需要,必须实现让一个Java程 序定时运行.比如,我的项目中,有一个网络蜘蛛,需要从互联网上抓取数据,与其配合,有另一个程序来对新抓取的页面进行索引的创建,由于数据源更新频率不 高,我们 ...

最新文章

  1. js复制input 框中的值
  2. ASP.NET那点不为人知的事(四)
  3. android网络监听
  4. lazada铺货模式的选品_lazada小白的运营难点→铺货与精细化运营的优劣势详解
  5. boost::stable_vector简单解析
  6. mycat 从入门到放弃 (转)
  7. java中if的嵌套循环_嵌套的多个“Next变量”if then循环
  8. linux AWK中正则表达式
  9. linux驱动视频采集卡,在linux下使用视频采集卡
  10. Java之打印指定月份日历
  11. java int转byte出现负数 byte转int的解决
  12. 光凭求职技巧如何可以突围?
  13. 国内外php商城系统 开源
  14. 而立之年——那些从一线城市退到二三线的程序员,现在过的怎么样了?
  15. 广东省开展2022年省级制造业单项冠军企业(产品)培育遴选
  16. 【Android】JNI调用(完整版)
  17. 蓝湖类似的软件_发现一款即使不联网也可以和蓝湖一样好用的工具。PxCook(像素大厨)...
  18. Opencv inRang() 和HSV色彩空间表
  19. 还在苦恼怎么学PS、编程?这五个自学网站免费教!年薪百万不是梦
  20. 【Unity Shader】(2)半兰伯特模型 构建光照

热门文章

  1. 300 行代码带你秒懂 Java 多线程!| 原力计划
  2. 京东回应拖欠神州 3 亿多元货款;苹果考虑将第三方浏览器和邮件设为默认;PS 诞生 30 周年| 极客头条...
  3. 如何使用 Python 构建一个“谷歌搜索”系统? | 内附代码
  4. 没有它,我们寸步难行——LBS的渊源与实践
  5. 华为腾讯众安微众360大咖齐聚,2019中国区块链开发者大会首批议程曝光!
  6. 科学技术究竟有没有国界?独家专访 IEEE 高级会员张海霞教授
  7. 老款 iPhone 涨价;微软 AI 研究院落户上海;刘强东不参加人工智能大会 | 极客头条...
  8. 但见苹果笑,那闻三星哭
  9. ajax分片上传,ajax异步实现文件分片上传
  10. mysql锁机制原理,一招彻底弄懂!