Java环境配置与编译运⾏详解
这篇⽂章主要为⼤家详细介绍了Java环境配置与编译运⾏的相关资料,具有⼀定的参考价值,感兴趣的⼩伙伴们可以参考⼀下
⼀、开篇
通过对之前Java之路的了解之后,相信初学者们都对Java有了⼀个⽐较深印象的了解了。但是事情不能总停留在理论层⾯,还得多多实现,才能见真知。我觉得,学习⼀样东西,要遵循理论——实践——理论这样⼀个套路。先了解事情的基本概念,弄懂基本概念后,要想⽅设法的⽤到⽣活的点点滴滴上,这样能加深理论的记忆以及发现⾃⼰的盲点。在重复的实践中,我们会逐渐对其有了⾃⼰的看法、想法,对理论有了⼀定的深化。最后回归理论,总结出⾃⼰的东西,这样东西就真正的属于你了。所以,今天我们要开始动⼿配Java环境,以及利⽤配好的Java环境来对程序进⾏编译运⾏。要注意的是,为了能让⼤家能更深刻的了解Java究竟是怎么样运作,怎样编译运⾏的,本章不会涉及到任何IDE的使⽤,编码当然就是⽤记事本了。IDE对提⾼⽇常的开发效率,但是记事本能增加⼤家应聘的录取机会哟!
⼆、JDK下载
在《》中已经讲过,要进⾏Java开发,除了JRE(Java运⾏环境)以外,还需要相应的开发⼯具,所以
我们需要下载JDK。下载JDK可以到Oracle官⽹:acle/ 上,选择Downloads——Java for Developers,如下:
接着选择download JDK,⽬前可选择的最新版为8u121。
如果要想获取以前的版本,可将页⾯拉到最下⾯,选择Java Archive,就可以获取到历史的Java版本。
我们这⾥以下载最新的8u121为例来进⾏后续说明。
三、JDK安装
根据系统环境下载了对应的版本之后,就可以进⾏安装了。整个安装过程没有什么特别,基本可以默认下⼀步就⾏了。如果需要,可以修改⼀下相应的⽬录。
中途会弹出⼀个对话框,意思是JRE所安装的⽬录,选择好⽬录然后"下⼀步"就⾏。
安装成功后,如果想看API⽂档之类的,可以点击它的"后续教程"。
⾄此,JDK已顺利安装完成。
四、环境配置
安装成功后,怎么⽤呢?我们可以打开命令控制台,然后去到你安装JDK⽬录的bin⽬录下,执⾏java命令,如果有⼀⼤堆提⽰出来,证明你已经安装正确了。
有的同学可能会遇到下⾯这种情况:
为什么会这样⼦呢?细⼼的同学可能会发现,当前⽬录不⼀样。我⼀开始就说了,我们需要在你安装JDK⽬录的bin⽬录下执⾏java命令,才能⽣效。原因很简单,就是因为bin⽬录下有各种各样的命令,java是其中⼀个命令。我们⽤到的很多关于java的命令,如javac、javaw等,都是在其bin⽬录下,所以⼤家以后深⼊学习,可以先对bin⽬录下的⼯具进⾏学习,⾥⾯有很多很有⽤的⼯具,这是后话。
回答刚刚的话题,如果⼀定要在bin⽬录下才能运⾏java命令是很不⽅便的⼀件事,不但不⽅便,很多其他程序要⽤到java命令也⽤不上,因为他们不知道去哪⾥java命令。这个时候,我们就需要对系统配置环境变量,以⽅便在什么⽬录下都能执⾏java命令。
选择"开始"——右键"计算机"——属性——⾼级系统设置——环境变量,即可打开环境变量的设置窗⼝。
主要对以下三个变量进⾏设置:
1.新增:JAVA_HOME,值为JDK路径,此处为:C:\Program Files\Java\jdk1.8.0_121
2.编辑:PATH,在原变量值的最后加上";%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin"。这⾥稍作⼀下说明。值⾥⾯的%JAVA_HOME%意思就是上⼀条新增变量JAVA_HOME的值,可见第⼀条新增变量JAVA_HOME是为了⽅便PATH变量配置的时候不需要写得太冗长。⽽PATH变量⾃⾝的意思就是windows会在PATH变量值⾥所列出的⽬录中⼀条⼀条的查要执⾏的命令,所以只要配置了PATH,java命令就不需要⼀定在JDK⽬录的bin⽬录下执⾏了。⽽⾄于为什么是上⾯那两个⽬录,是因为bin下⾯的都是java⽤到的命令,也可以说是⼀些⼯具。
3.新增:CLASSPATH,其值为".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar"。CLASSPATH的作⽤是让java程序编译的时候(⽤javac的时候)知道去哪⾥到Java的源⽂件,或者字节码⽂件(CLASS⽂件)。其中,dt.jar是关于运⾏环境的类库,tools.jar是⼯具类库,编译和运⾏的时候都需要⽤到。这⾥值得⼗分注意的是,整串值的开始部分有个".",⼀定不能漏,这代表的是当前⽬录的意思。
当配置完这三点,我们再在⽤户的⽬录下运⾏java -version命令,就能看到cmd能⾃动到java程序并且运⾏了。
java安装完整教程
五、初识Java编译
在开发我们的第⼀个Java程序之前,⾸先粗略的了解⼀下Java代码的编译和执⾏的整个过程。我们经常会看到Java⼯程⾥⾯有这两种后缀的⽂件:.java和.class。这两种⽂件分别代表Java的源代码和字节码⽂件,⽽其中的字节码⽂件就是java实现"Write Once,Run Anywhere"的关键。我们可以先来看看下⾯两幅图[1]。
Java编译器编译Java代码的流程如下:
JVM执⾏引擎完成Java字节码的执⾏:
从上两图可以看到,Java运⾏程序分两步⾛,第⼀步是源码编译成字节码,第⼆步是字节码编译成⽬标代码。这就和C、C++直接编译成与机器相关的⽬标代码不⼀样了。通过字节码这⼀中间环节,⼤家可以拿着编译成功的包发布到任⼀有JVM环境的机器上,再由JVM来实现到机器相关的最终⽬标代码的编译,从⽽做到"Write Once,Run Anywhere",⽽⽆需与具体运⾏平台绑定。所以我们通常所说的对代码进⾏编译,就是Java源代码编译成JVM字节码的过程。
六、java与javac
在上⼀节我们已经说过,%JAVA_HOME%\bin⽬录下有⼤量的Java⼯具可以使⽤,我们以后也要逐渐
熟悉。那作为初接触java的我们,⾸先应该熟悉哪个呢?⽆疑是java与javac了。
现在的社会节奏太快了,很多⼈都或多或少有点急功近利。在开发⽅便,这主要体现在没理解程序的底层是怎么运作的,⼀上来就开始IDE开发,遇到各种问题后,由于不懂底层原理,就不知道如何处理。个⼈认为,IDE要⽤,可以极⼤的提⾼我们的⽣产效率,但是底层原理也⼀定要懂,不然都不知道IDE是怎么讲你的程序编译打包运⾏的,遇到问题的时候就不会解决了。很经常见到的⼀种情况是,有些⼈看到服务器上没有IDE就懵了,连怎么运⾏jar包程序都不会。
回归正传,我们就从java与javac⼊⼿,了解怎么在命令⾏中编译和运⾏⼀个java程序。⾸先,我们分别认识这两个命令是怎么⽤的。
java命令:
作⽤:⽤于执⾏类或者执⾏jar⽂件。
在cmd控制台中输⼊java回车,我们可以得到java命令运⾏的格式如下:
上图没有截完整,选项(-options)后⾯还有的,⼤家可⾃⾏运⾏java命令来看。我们暂时忽略选项(-option)的内容,主要看必填项"类"和"jar⽂件"。可以看到java命令可直接运⾏类和jar⽂件。举个例⼦,如何有个HelloWorld.class⽂件⾥⾯有个HelloWorld类,则运⾏的命令是:java HelloWorld。这⾥
要注意的是,java后⾯不是class⽂件(HelloWorld.class),⽽是对应的类(HelloWorld)。如果有个HelloWorld.jar的jar⽂件,运⾏的命令是:java -jar HelloWorld.jar。
javac命令:
作⽤:⽤于编译.java⽂件。
在cmd控制台中输⼊javac回车,我们可以得到javac命令运⾏的格式如下:
我们暂时忽略选项(-option)的内容,可以看到javac最简单的格式就是跟⼀个源代码⽂件。举个例⼦,如果有⼀个HelloWorld.java⽂件需要对其编译,则运⾏的命令为:javac HelloWorld.java,就可以在当前⽬录下⽣成⼀个HelloWorld.class的字节码⽂件。
七、第⼀个Java程序
了解完java和javac命令以后,我们就可以开始第⼀个Java程序了,当然,我们是⽤记事本来开始我们的第⼀个Java程序。微软⾃带的记事本功能⽐较少,⽤户体验也不是⼗分好,个⼈⽐较喜欢⽤Notepad++,⼤家可根据⾃⼰的习惯来选择喜欢的记事本。
第⼀部分:
创建HelloWorld类,保存在HelloWorld.java⽂件中。
在cmd控制台中,运⾏javac HelloWorld.java命令对其编译,则会⾃动⽣成HelloWorld.class⽂件。
然后运⾏java HelloWorld命令,则会显⽰Hello World。这⾥⼀定要注意,不是运⾏java HelloWorld.class,java后⾯跟的是要运⾏的类,即HelloWorld。
这就完成了从代码编写,到编译,再到运⾏的整个过程了,是不是很简单呢?其实⼀切复杂的事情都是从简单做起,只要打好了基础,学习上层的东西就很简单了。
第⼆部分:
有⼈会问了,那如果要引⽤其他的jar包或者类的话,那怎么办呢?别急,我们尝试⼀下。⾸先建个User类(只是随便建个类,⼤家别太在意),它有个说出内容的⽅法,存在User.java⽂件中,代码如下:
修改HelloWorld类,代码如下:
User.java放在otherclass⽬录睇下,不在HelloWorld.java同⼀个⽬录:
然后我们尝试⽤上⾯的⽅法进⾏编译,会发现提⽰不到User类,这就是因为javac不知道去哪⾥User类的缘故了。
遇到这些情况,我们⼀定要会看帮助提⽰,看看javac可以提供什么参数。这不单单为了解决⽬前的问题,还为了以后解决各种各样更多的问题,只要能做到举⼀反三,没有什么问题能难得到你。
我们可以看到,只要增加-classpath参数,就可指定要查的类的⽂件位置,这样我们就可以给javac指定User的位置了,所以我们可以写成:
则会成功编译HelloWorld.java和User.java,在对应⽬录中⽣成HelloWorld.class和User.class。
这时候我们可以执⾏java HelloWorld看看能否出结果,但可惜的是,⼜说没到User类:
聪明的同学可能会想到,java应该也有个-classpath参数。恭喜你,开始开窍了,那我们赶紧试试看:
⼜不⾏,崩溃中!!呵呵,别急,java跟javac有点不同,java带着-classpath参数会是java只会在classpath所在的⽬录⾥类,所以如果HelloWorld实在当前⽬录下,要把当前⽬录加上,也就是加⼀".",如下:
这就成功运⾏了。
第三部分:
这时候,有些⼈⼜不爽了,为什么每次编译运⾏都要执⾏这么⼀⼤串东西,那多⿇烦,如果类多起来,那岂不是输个命令都要输半天,有没有⼀些⽅便⼀点的⽅法,供以后执⾏⽤呢?那当然有,这就是将所有类打包成⼀个可执⾏的jar包,以后直接运⾏jar包就可以了。这⾥⽤到的命令是jar命令,我们先看看它的格式与内容:
这⾥我们主要⽤到的是以下四个选项:
-c 创建新的归档⽂件
-v 在标准输出中⽣成详细输出
-f 指定归档⽂件名
-e 为捆绑到可执⾏ jar ⽂件的独⽴应⽤程序
指定应⽤程序⼊⼝点
这⾥我们根据提⽰的格式,⽤以下命令将User.class和HelloWorld.class打包成HelloWorld.jar包。
这就⽣成了⼀个HelloWorld.jar的⽂件。如果⼤家想看HelloWorld.jar⾥⾯有什么内容,告诉⼤家⼀个⼩技巧,可以将jar包拖到winrar等压缩软件中,就可以看到具体的内容。
可以看到⾥⾯除了要打包的内容外,还多了⼀个META-INF⽂件夹,⾥⾯有⼀个MANIFEST.MF⽂件,这是⼀个清单⽂件,⾥⾯有相关的清单信息。我们需要对其进⾏编辑,增加Class-Path:参数,就如告诉java命令classpath是什么⼀样。下图中⾼亮的为增加的内容:
最后,我们通过java -jar HelloWolrd.jar命令,则可运⾏其程序。以后我们拿着这个jar包就可以随处显⽰"Hello World",⽐之前要弄⼀⼤串选项⽅便多了。
⼋、总结
本⽂从jdk的下载、安装,环境的配置,程序的编写、编译以及执⾏,从头到尾做了很详尽的介绍,为的是让⼤家对这个过程有个深刻的了解。环境配好了,⽤上IDE了,以后⼤家就可能很少接触这⼀过程的了。但这⼀过程不能丢,这是⼀个基础,正如我前⾯说的,如果你不了解基础,遇到问题的时候,都不知道从何解决。上层东西学多了,但却不了解底层究竟是怎么⼀回事,⼼⾥没有底,⼈家换个包装,你⼜重新学习,⽽做不到举⼀反三,那是事倍功半啊!
参考⾃:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。