很多人在初学Java的时候经常会被书中介绍的一堆环境变量的设置搞得头昏脑胀,很多书中都会在初装JDK的时候让他大家设置JAVA_HOME环境变量,在开发程序的时候设置CLASSPATH环境变量,而很多人并不理解这两个环境变量的作用,我们来分别进行详细的阐述。
首先是JAVA_HOME环境变量,我们先来掌握这个环境变量的设置内容,JAVA_HOME这个环境变量的设置内容是JDK的安装目录,比如说您的JDK安装在d:\jdk1.6.0这个目录下,请您查看一下这个目录下是不是有一个子目录bin,bin目录中是不是有java.exe这个文件,如果是,那么您的JAVA_HOME环境变量的内容应该为d:\jdk1.6.0。那么我们设置这个环境变量的作用是什么呢?就单独的java开发而言,这个环境变量并没有任何作用,这就是很多根据书上的描述设置好之后,把一本书学完也没有用到这个变量,所以很是不理解。
其实JAVA_HOME变量最好还是设置一下,首先,我们为了能够编译和运行java程序,需要在PATH环境变量中把java.exe所在的目录设置为PATH变量的一部分,目的是为了能够通过命令行运行javac和java命令成为可能,当你在命令行中输入javac ...或者java ...的时候,如果提示你一个错误:‘javac‘ 不是内部命令或外部命令,也不是可运行的程序或批处理文件。这时候说明操作系统没有找到你通过命令行输入的javac这个命令,为什么呢?因为操作系统并不知道你的javac.exe这个文件在哪里,所以无法执行对应的文件。那么为了能够让操作系统找到这个可执行文件,我们就需要把javac.exe这个可执行文件所在的目录作为PATH环境变量的一部分设置起来,这样当你在命令行输入一个命令的时候,操作系统就会自动搜索PATH变量中所指定的所有目录了。在Windows系统中PATH变量中的所有路径采用分号分割,如果在Linux系统中采用冒号分割。另外说明一点,如果你设置好了环境变量,在命令行中还是出现同样的错误,那么有两种可能,一种就是你的设置不正确,另一种就是你的设置没有生效,一般你可以关闭命令行窗口再重新打开就可以了。这对这个设置,以刚才的目录为例,那么PATH变量中的内容就是...;d:\jdk1.6.0\bin,这时候我们可以借用已经设定过的JAVA_HOME,将PATH的内容修改为:...;%JAVA_HOME%\bin,这样的设置有一定的好处,当你的系统中重新安装JDK,并改变过目录的话,你只要修改JAVA_HOME的内容就可以了,PATH则不需要修改。此外,JAVA_HOME变量还会有一些其他用途,比如Eclipse这个IDE,它本身是由java程序编写的,那么在运行的时候必然需要虚拟机的存在,所以Eclipse在启动时需要查找虚拟机,如果有JAVA_HOME这个变量,那么Eclipse就会利用这个变量找到虚拟机的路径。所以虽然开始JAVA_HOME环境变量可以不设置,但是还是建议大家为以后考虑而设置上。
我们继续来谈论CLASSPATH的问题,很多书上在讲解java程序的时候建议大家设置CLASSPATH这个环境变量,我们这里不建议大家设置。原因我们会在稍后的时候看到。讲到CLASSPATH,我们首先来看编写java程序时一直在用的两个命令javac和java。
javac的命令语法是这样的:
javac <选项> <源文件>
我们常用的情况是这样的:
javac -classpath <类路径> <要编译的java源文件>
这里的类路径输入什么呢?这里的类路径是指要编译的java源文件中所用的非java的基础API中的类在那个目录下,路径可以是多个目录,用分号隔开来。比如说我们要编译App.java这个文件,而这个文件中用到了com.util这个包中的MyDate这个类,现在我们假设MyDate这个类存在目录是:d:\mylib\com\util\MyDate.class,那么我们如何编译App这个类呢?我们的命令如下:
javac -classpath d:\mylib App.java
注意这里的classpath的内容,我们只是指定路径到package所在目录,并不能把package一起指定进去,而且MyDate.class必须在com\util这个目录中,因为这个类定义了package为com.util。好了现在你对javac中的classpath明白了吗?
我们再来看java这个命令,这个命令的语法是这样的:
java [选项] 类 [参数]
比如说以上面的例子,我们假设App这个类位于com.app这个package中,它的存放目录是:d:\dev\myapp\com\app\App.class,那么我们该如何运行这个类呢?命令如下:
java -classpath d:\dev\myapp;d:\mylib com.app.App
从命令中我们可以看到,在classpath后面我们指定两个目录,分别是App这个类的package所在的目录和MyDate这个类的package所在的目录,这里的类路径要给定的是要运行的类和这个类用到的所有类的package所在的目录,多个目录之间用分号隔离开来,最后指定要运行的类的时候必须加上package。
好了到这里你应该彻底掌握了编译java程序和运行java程序的诀窍了吧。如果我们在系统环境变量中设置了CLASSPATH的话,在命令行中通过java运行的时候如果再不指定CLASSPATH参数,那么就会导致java虚拟机只是按照CLASSPATH环境变量中的目录搜索类,而不在你的当前目录下搜索类,结果自然会出现Exception in thread "main" java.lang.NoClassDefFoundError,所以当你看到这个错误的时候请查看一下你的系统环境变量,如果没有设置CLASSPATH,那么在检查一下你的当前目录。为了确保万无一失,按照上面讲述的例子进行操作是不会发生任何错误。
最后祝遇到此类的麻烦的朋友早日解决问题!
本文转自CSDN博客,转载请标明出处:http://blog.csdn.net/stevencn76/archive/2007/09/13/1784272.aspx
Java中JAVA_HOME与CLASSPATH的解析(转)
时间: 2024-11-01 21:47:47
Java中JAVA_HOME与CLASSPATH的解析(转)的相关文章
java中构造方法和方法全面解析
java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望大家多多讨论. 构造方法和方法的区别: 构造方法要与类名相同,无返回类型,在类初始化的时候调用. 方法最好与类名不同,对象调用,静态方法可用类名.方法(). 构造器和方法在下面三个方面区别:修饰符,返回值,命名. 1.和方法一样,构造器可以有任何访问的修饰: public
java中path和classpath
Path 路径,是java编译时需要调用的程序(如java,javac等)所在的地方; CLASSPATH的作用是指定查找类的路径:当使用java命令执行一个类(类中的main方法)时,会从classpath中进行查找当前运行class所依赖的其它class文件.,即CLASSPATH ->到哪里找需要执行的.class文件(程序依赖外面Jar,再细一点讲是依赖jar里面的class). Path1. PATH命令可用来设置可执行文件(仅包括:.COM..EXE及.BAT文件)的搜索路径.当您运
Java中使用Jackson进行JSON解析和序列化
Java中使用Jackson进行JSON解析和序列化 1.添加依赖,在Maven的pom.xml文件中添加以下依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version> </dependency> 2.封装JSON解
java web项目 。classpath 文件解析
eclipse工程中.classpath文件含义: 下面是一个.classpath文件内容: < ?xml version="1.0" encoding="UTF-8"?> < classpath> <!-- 源码目录 --> <classpathentry kind="src" path="src"/> <!-- 工程引用外
在Java中使用xpath对xml解析
xpath是一门在xml文档中查找信息的语言.xpath用于在XML文档中通过元素和属性进行导航.它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等.在学习本文档之前应该对XML的节点,元素,属性,文本,处理指令,注释,根节点,命名空间以及节点关系有一定的了解以及对xpath也有了解.XML学习地址:http://www.runoob.com/xml/xml-tutorial.htmlxpath基本语法学习地址:http://www.runoob.com/xpath/xpath-tut
Java中String对象的传递解析
话不多说了,直接上代码. public class Demo { // static String str = "hello world!"; // static String str = new String("hello world!"); // static char[] ch = new char[]{'A','B','C'}; public static void test(String str,char[] ch,int a) { System.out.
Java中Path和CLASSPATH的正确配置
JAVA_HOME: D:\soft\study\jdk1.7.0_01 JAVA_HOME里配置的是我们jdk安装的路径,这样配置就好.如果你是要用到JAVA_HOME的话,那就不要在JAVA_HOME的后面再添加分号(;),这样反而出问题.如下: Path: .;%JAVA_HOME%\bin; 此处的这个路径用到了上面的JAVA_HOME.有几点需要注意: 1.路径前面要有一个点号(.),用来指定当前文件夹: 2.此路径要添加在系统原本的路径(%SystemRoot%\system32;%
Java 学习第四篇--Java环境JAVA_HOME 和 classpath的理解
1.JAVA_HOME 环境变量 JDK 的目录 用于定位JDK的bin目录 有利于版本的变更 eg: 在Path的值后加上 ;%JAVA_HOME%\bin 创建环境变量JAVA_HOME D:\Program Files\Java\jdk1.8.0_101 2. classpath 其作用就是用来定位和设置 class文件的检索位置或者存放位置 一般不需要配置 且 配置时要慎重 其配置具有先后的顺序关系 eg: classpath .;D:\Develop 先
XML解析——Java中XML的四种解析方式
XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四种:1.DOM解析:2.SAX解析:3.JDOM解析:4.DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台. 针对以下XML文件,会对四种方式进行详细描述: 1 <?xml version="1.