java环境变量及Eclipse自动编译问题

简介: java环境变量及Eclipse自动编译问题

环境变量,是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。


JAVA_HOME:它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。


变量名:JAVA_HOME变量值:C:\Program Files\Java\jdk1.8.0_131


CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPATH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。


变量名:CLASSPATH变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar解释语:dt.jar是关于运行环境的类库,主要是swing的包在用到swing时最好加上       tools.jar工具类库(编译和运行等),它跟我们程序中用到的基础类库没有关系。我们注意到在Path中变量值bin目录下的各个exe工具的大小都很小,一般都在27KB左右,这是因为它们实际上仅仅相当于是一层代码的包装,这些工具的实现所要用到的类库都在tools.jar中,用压缩软件打开tools.jar,你会发现有很多文件是和bin目录下的exe工具相对性的,查看图一。当然,如果tools.jar的功能只有这些的话,那么我们根本不用把它加入到CLASSPATH变量中,因为bin目录下的工具自己可以完成对这些类库的调用,因此tools.jar应该还有其他的功能。在里面还可以看到有Applet和RMI等相关的文件,因此tools.jar应该还是远程调用等必须的jar包。tools.jar的其他作用可以查看其他资料。 


PATH环境变量。作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。


变量名:Path变量值:%JAVA_HOME%\bin

我们手动编写一个HelloWorld.java类,然后用javac进行编译得到HelloWorld.class



0a77f73e619cef69736ccdd33cf0a5f9.png

我们在Eclipse中新建一个同样的类然后保存(不点击执行按钮)。

1f2269582573b5580f889776edecc452.png



保存之后我们到工作目录下查找会看到对应的bin目录下已经生成了对应的class文件


5b9c7926dc11c9b831658369ebef8d8c.png


为什么会在bin目录下生成class文件呢?


右键项目--》Build Path--》Configure BuildPath... 如下图所示,编译输出路径可以自己设置

b87fb3f2b7c81d16265eb4c612c1cd40.png



默认情况下:普通工程:bin,web工程:WEB-INF/classes,maven工程:target/classes


我们把手动编译的和Eclipse为我们编译的进行一下对比


然后简单修改一下这个类,保存(仍不执行)


f928409f3f1e53f8fc4cf33cd35b5964.png


然后再到bin目录下观察class文件,发现时间已经被更新了

721d3cd54258d72eecfd1ffa9805f663.png



为什么我们只是保存了一下就生成了新的class文件?


572fb422b6ebf9a81db185298dbf9cde.png


如上图所示,我们选择了自动构建编译,那么在新建一个类或者对其进行修改的时候Eclipse便会自动为其进行编译。


如果我们把自动编译取消,在对这个类修改的时候。


0c7445cefe03189f2a0b9c5f8f98b349.png


会发现保存之后编译文件还是旧的,新加的代码没有被重新编译。

ebbfabc90f5c5aa202ea3e7d4f0a4474.png



那么我们点击执行看看


ddb04456660c75a94d73d41f87d8a21b.png


会发现执行之后Eclipse重新编译了java文件

4e803dc8ab3ae2fc7973d0271be13883.png



如果说我们没有修改Java文件里面的内容,再次执行的话会发现HelloWorld.class并没有更新(注意看时间),因为还是那个源文件,编译之后肯定还是一样的。



ad2d671a27788ee60933d5e01f1e4620.png

java文件没有改动的话Eclipse是不会重新编译的。

912d24154517e060717f51872f5bb634.png



但是!通过eclipse  --->project  ----->clean...


这个时候eclipse会将所有的以前编译信息清除然后编译。  

选项将工程中的.class文件删除,同时重新编译工程。


25cabae3fa8c10488a70783ad97ff2be.png

ba06ee055ffedc02a4cb03b38dd82ab6.png

目录
相关文章
|
19天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
2月前
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
|
3月前
|
存储 Java
java基础(7)变量以及变量的分类
Java变量是内存中存储数据的基本单元,包含数据类型、名称和字面值。变量的数据类型决定了分配的内存空间大小。变量声明格式为“数据类型 变量名;”,变量名应符合标识符命名规范。变量可以重新赋值,但数据类型需一致。变量可以一行声明多个,作用域决定了变量的可用范围。变量分为局部变量和成员变量,局部变量定义在方法体内,成员变量定义在方法体外、类体内。
45 2
|
3月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
71 2
|
27天前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
14天前
|
Java Android开发
Eclipse Java 构建路径
Eclipse Java 构建路径
25 3
|
16天前
|
Java Android开发
Eclipse 创建 Java 项目
Eclipse 创建 Java 项目
36 4
|
2月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
28 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
2月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
2月前
|
Java Linux iOS开发
如何设置 Java 的环境变量
设置Java环境变量是使用Java开发工具和运行Java程序的前提。主要步骤包括:安装JDK,配置系统环境变量中的JAVA_HOME、PATH和CLASSPATH,确保命令行可直接调用javac和java命令。

推荐镜像

更多