Java开发环境搭建与实验教程
如何配置JAVA的环境变量
下载Java JDK(JDK包含JRE。SDK是Software Development Kit 即软件开发工具包,可以包括函数库、编译程序等。JRE是Java RuntimeEnviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。)
可到网上搜索下载。
官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
下载后安装,默认安装即可。
下载JDK 安装包安装后,如何配置JDK环境变量呢?
在 windows xp中,右击“我的电脑”,单击“属性”,单击“高级”,单击“环境变量”;
在Windows 7中,右键“计算机”单击“属性”,单击“高级系统设置”,单击“高级”
,单击“环境变量”。如图:
在win10配置系统环境变量
右键此电脑,属性,高级系统设置,系统属性,如下图:
在“系统变量”中,设置3项:JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则先选中再点击“编辑”,不存在则点击“新建”;
在Windows中,环境变量分为“用户变量”和“系统变量”,它们的区别是,用户变量只对当前的用户起作用,而系统变量则对系统中的所有用户起作用。如果希望在多个用户之间共享环境变量的设置,可以将这些环境变量设置为系统变量,否则,应该使用用户变量,避免影响其他用户。
变量名:Path 值:%JAVA_HOME%\bin
变量名:CLASSPATH 值:.;%JAVA_HOME%\bin
变量名:JAVA_HOME 值:C:\Program Files\Java\jdk1.8.0_121
变量名:JRE_HOME,值为C:\Program Files\Java\jdk1.8.0_121\jre
说明:值中多项之间,用英文分号与之隔开。后两项的路径根据实际安装情况而定。
bin目录下面都是各种编译执行命令;
. 英语句点表示当前路径。
设置JAVA_HOME
为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.7.0目录里,则设置JAVA_HOME为该目录路径,那么以后你要使用这个路径的时候,只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串;
如果使用1.5及以上版本的JDK,也可以不设置CLASSPATH这个环境变量,也能正常编译和运行Java程序,如果没有设置CLASSPATH环境变量,Java解释器将会在当前路径下搜索Java类。
对于Java10(JDK10)版本,环境变量的设置与以前版本相比变得精减许多,只需设置Path值。
之后,就可以进行java程序设计练习了。
java程序的源码文件的后缀(后缀[名]也称为扩展名)是 .java,可以用记事本建立后缀是.java文件。
下面是一个简单的HelloWorld.java程序:
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
保存到D:\JavaTest文件夹中,将文件保存为HelloWorld.java。
编写java程序应注意大小写,java语言区分大小写。
请注意,如果一个java源程序中含有public的类,则文件名必须与类名一致,如果没有public类,则文件可以随意命名。一个文件中,public的类可以有零个或一个,非public的类可以有零个或多个。否则出错不能编译成字节码。
在Java源文件中,如果使用package语句,则package语句应作为第一条可执行语句(它的前面只能有注释或空行);如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包,即源文件中定义命名的类在同一个包中,但该包没有名字。
上面的程序定义了一个类(class)HelloWorld,然后定义了该类的一个方法(method)名为main。main方法中有一个语句:
System.out.println("HelloWorld!");
它的功能是向终端输出字符串"HelloWorld!"。注意,Java中的语句要以英文分号(;)结尾 (与C/C++相同)。
在开始—运行中输入 cmd 打开命令提示符窗口
使用javac来编译成字节码文件:
JavacD:\JavaTest\HelloWorld.java
当前路径下将生成字节码文件HelloWorld.class。
字节码文件的后缀是 .class文件
使用java命令来运行:
进入D:\JavaTest\,再执行: JavaHelloWorld
可以看到结果出现:
Hello world
public static void main(String args[]) 注解:
参考https://www.cnblogs.com/guankelei/p/11327360.html
1)public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数。
2)static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。
3)void关键字表明main()不需要返回值。
4)参数String[] args是一个字符串数组,接收来自程序执行时传进来的参数。看下面的例子:
public class ArgsDemo {
public static void main(String[] args) {
String str = new String();
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
str += args[i];
}
System.out.println(str);
}
}
使用javac ArgsDemo.java命令编译生成ArgsDemo.class文件
使用java ArgsDemo a b c 运行,将得到这样的输出:
a
b
c
abc
这样传进main函数的就是一个字符串数组, args[0] =a; args[1]=b;args[2]=c, 如果不传参数进来,args为空。
【Java程序的编译特点
Java程序和C、C++程序不一样,Java程序运行首先由编译器编译成.class类型的文件, 然后再通过虚拟机(JVM)从.class文件中读一行解释执行一行,所以它既是编译型语言又是解释型语言。可以参考下面的示例图了解:
】
javac编译成功,用java运行class文件出现“找不到或无法加载主类”的问题的原因与处理方法
(通常把含有main函数的类称之为主类)
这种情况:javac运行是OK的,确实生成了 .class 文件,但是java 命令运行 .class 时却报错了,说是找不到或无法加载主类。
很少有人提到这点,原因是:javac 编译命令支持路径,但java运行命令不支持路径,如
在dos窗口中输入javac f:/java/8000/example.java便可以直接进行编译,但用java f:/java/8000/example 来运行该文件报错“找不到或无法加载主类”。
处理方法有二:
1.在系统环境变量classpath的最前面要加一个本目录路径,用.表示
2. 将.class 文件放到在java命令所在目录下。
java控制台编译包内程序,成功编译,并且能显示class文件,但每次运行都显示“找不到或无法加载主类”的错误
包内程序运行时需要按照:javapackage.class文件名的形式进行执行,如:
frgo包内创建Array.java文件
1.编译:进入到frgo目录下,编译javacArray.java -->当前目录下生成Array.class
2.运行:在当前目录下(frgo目录下),执行javafrgo.Array;输出执行结果。
java程序的组织结构
JAVA程序是由类和接口组成的。
一个简单的java程序,有一个类即可。
一个简单类,可以仅包含一个入口方法public static void main(String[] args),如下:
public class类名{
…
publicstatic void main(String[] args){
…
}
}
一个比较完整java程序包括下列部分
package语句;
import语句;
publicclassDefinition; // 公共的类定义部分,至多只有一个公共类的定义
// java语言规定该java源程序的文件名必须与该公共类名完全一致
classDefinition;// 类定义部分,可以有0个或多个
interfaceDefinition;// 接口定义部分,可以有0个或多个
一般地,具有相同功能的类放在一个package中。
一个java源程序至多只能有一个公共类(public类)的定义。
若java源程序有一个公共类的定义,则该源文件名字必须与该公共类的名字完全相同。
若源程序中不包含公共类的定义,则源该文件名可以任意取名。
若一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件。
java源文件又称为编译单元。一个java文件可以包含多个类,但至多包含一个公共类(public类),作为该java文件的公用接口,公共类的名字和源文件的名字要相同,但后缀为.java。
一个java文件中,在不同类中,是可以有多个public static voidmain(String[] args)
示例如下:
package lc01;
public class cs {
cs(){
System.out.println("你好啊! world!");
}
public static void main(String[] args) {
new cs();
}
}
class a{
public static void main(String[] args){
}
}
但是,对于一个Java程序而言,往往只需要一个入口,也就是只需要有一个类包含main方法。
又,publicstatic void main()不是必须要放在public类中,如
package lc01;
class Dog{
Dog(){
System.out.println("I'm a dog.");
}
public static void main(String[] args){
new Dog();
new Cat();
}
}
class Cat{
Cat(){
System.out.println("I'm a cat.");
}
}
文件中没有一个public类,程序也能正常运行。
Java包、公共类与Java源码文件的关系
一个项目(Project)可以有几个包,包是为了更好的规划整理你写的各个类,将相关的类放在一个包中。包是为了更好的规划整理你写的各个类。
在Java源文件中,如果使用package语句,则package语句应作为第一条可执行语句(它的前面只能有注释或空行)。package语句的一般格式为:
package 包名;
包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,包的名字有层次关系,各层之间以点分隔。包层次必须与Java开发系统的文件系统结构相同。例如 package aaa.bb.image
则此文件必须存放在aaa\bb\image目录下。
如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包,即源文件中定义命名的类在同一个包中,但该包没有名字。
包(package)分为无名包和有名包,无名包的好处是无需对包作任何声明,可以拿来方便快捷使用,但也因为无名包没有名字,所以其它包无法用import语句导入访问无名包中的类,所以说无名包只适合在局部应用。而有名包就可以被其它包所访问,先用import语句导入,再用“包名.类名”方式访问指定包中指定的类。
包(package)是一个为了方便管理组织java文件的组织和管理方式。包内包含有一组类。可以使用import关键字来导入一个包。例如使用import java.util.* 就可以导入java.util包里面的所有类。所谓导入这个包里面的所有类,就是在import声明这个包名以后,在接下来的程序中可以直接使用该包中的类。
一个Java源代码文件必须有一个后缀名.java,此文件通常被称为编译单元。在编译单元内有且仅有一个public类,否则编译器就不会接受。该public类的名称必须与文件的名称相同(包括大小写,但不包括后缀名.java)。
当编译一个.java文件(即一个编译单元)时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java文件中每个类的名称相同,只是多了一个后缀名.class。因此在编译少量.java文件之后,会得到大量的.class文件。每个.java文件都是一个构件,如果希望许许多多的这样的构件从属于同一个群组,就可以在每一个.java文件中使用关键字package。而这个群组就是一个类库。
例如,假设文件的名称是Apple.java,这就意味着在该文件中有且仅有一个public类,该类的名称必须是Apple(注意大小写):
package fruit;
public class Apple
{
//...
}
上面的代码已经将Apple类包含在了fruit包中,现在如果有人想使用Apple或者是fruit中的任何其他public类,就必须使用关键字import来使fruit中的名称可用。
import fruit.*;
public class ImportApple
{
public static void main(String[] args)
{
Apple a=new Apple();
}
}
或者使用带包名的限定名称:
public class QualifiedApple
{
public static void main(String[] args)
{
fruit.Apple a=new fruit.Apple();
}
}
显然使用关键字import使代码更加简洁。
使用命令行编译运行带包名和不带包名的Java源文件HelloWorld
1.不带包名的。
源码:
public class HelloWorld{
public static voidmain(String args[]){
System.out.println("helloworld");
}
}
文件名字必须是:HelloWorld.java。我们使用命令行来编译运行。
2. 带包名的。
源码:
package net.csdn.blog;
public class HelloWorld{
public static voidmain(String args[]){
System.out.println("helloworld");
}
}
具体步骤(我的是在D盘下):
1.创建文件夹net,在文件夹下面再创建csdn,再创建文件夹blog,把HelloWorld.java放在blog下。
2.命令行先编译Helloorld.java。
3.再运行命令java net/csdn/blog/HelloWorld。
集成开发环境(IDE)
上面是Java最简单的开发实验环境——使用命令行方式,比较麻烦。要开发调试较为复杂的程序,还是使用集成开发环境(IDE)方便,对于IDE,则可根据个人喜好选择。这里推荐开源免费的Eclipse。
Eclipse是一种可扩展的开放源代码的集成开发环境(IDE)。由IBM公司开源,2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。虽然大多数用户很乐于将Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse的最大特点是它能接受由开发者自己编写的开放源代码插件,通过插件也可使其作为其他计算机语言比如C++、Python的开发工具。
这需要下载EclipseIDE for Java Developers
可到网上搜索下载。根据操作系统的位数(bit)32位或 64位选择相应位数(bit)的版本下载。
Eclipse属于绿色软件,安装程序不会往注册表写入信息。Eclipse安装程序是一个压缩包,在解压缩后的文件夹中找到eclipse.exe,双击它就可以启动运行eclipse。当然你可以创建桌面快捷方式图标,以后用此桌面快捷方式图标启动运行eclipse。
推荐尽量适应使用英文的版本比较好,你也可以按装中文语言包。找到其中的简体中文版下的关键词中带有 eclipse-zh(其它的版本的文件全名可能不同,但是其中会包含eclipse-zh关键字)。
语言包使用方法
下载后解压文件,将里边的文件对应复制到eclipse的安装文件同名文件夹下即可(Eclipse文件夹的dropins文件夹),再次启动eclipse,你会发现界面已经变成中文了(个别项目可能没有汉化完全)!
至此,就可以学习了普通Java程序设计了。
启动eclipse,启动时会提示你选择一个workspace。如下图:
这里建议根据实际的需要将不同的project创建在不同的workspace中,以免日后workspace中的project越来越多,影响eclipse的启动速度(当然,对于近期不使用的project建议将其关闭,右键单击项目名称选择"Close Project",如果需要开启项目,则右键单击关闭的项目名称选择"Open Project"即可)。
切换workspace可以在启动是进行选择,也可以等启动后在“File”--"Switch Workapsce"中进行切换。
第一次启动eclipse后,需要做一些基本的eclipse配置。
配置jdk
默认情况下,eclipse会自动关联JDK,如果我们安装了多个版本的JDK,也可以手工进行配置,方法如下:
Window--Preferences--Java--InstalledJREs--Add--Standard VM--选择JDK安装目录。
如果开发和调试JSP (java server page)程序还需要安装配置tomcat。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
Eclipse使用简介
Eclipse打开后的界面如下图:
1、创建一个project(项目)
在Eclipse中,程序必须通过项目(project)来组织,现在学习javaSE基础,开发java应用程序,即创建一个java project。 步骤如下:
在File菜单中依次选择new-- Java Project,进入项目创建窗口, 在Project name中输入项目名称,如firstProject,其他配置信息使用默认就可以,点击【Next】继续
2、在项目项目(project)中创建java应用程序。
右键项目浏览区的firstProject,依次选择NewàClass,弹出如下Java类创建的界面,在该界面中设置包名和类名,本例分别填写exercise和HelloWord,点击【Finish】完成类的创建,如图:
单击“Finish”按钮,接下来在代码编辑窗口中出现HelloWorld.java的编辑区,顺便指出,在eclipse 中为java项目新建Java文件时,根据代码模板(Code Templates)会在开头自动添加package等内容,如下图:
此时,可以编写代码,如下图所示:
Java源文件后缀是.java,在展开项目浏览区的src文件夹即可找到。
3、编译java 源文件
如果我们在Project菜单栏中选择 Build Automatically(自动编译),Eclipse会自动对java源文件进行编译,如图所示:
如果编写的代码有错误,Eclipse在代码编辑区会产生错误提示,如图:
4、运行java程序
选中java源文件后,点击如图下拉菜单按钮,依次选择 Run As à Java Application,如图:
此时,Eclipse将运行结果输出到【控制台】(Console)中,如图:
Java桌面应用程序的发布
打包和部署Java桌面应用程序,可以发布为一个可执行的 .jar包,方法有:
法一:用jar工具打包生成 .jar 文件
虽然在开发过程中,我们可以直接使用Java class文件来运行程序,但这并不是一个好方式,Java 提供了打包工具Jar(Java Archive),用于将编译后的class文件打包发布,打包为.jar 文件,双击运行。
打包时要注意以下三个要点:
MANIFEST.MF- 打包清单。它是打包的关键性文件,主要是设置执行入口类和支持库的路径,在运行 Java 应用程序时是要根据此文件中给出的信息来查找入口类和支持库。
支持包-如果 Java 应用程序用到了一些类库包,那么就必须将这些包也复制到程序运行目录,否则程序将无法运行。如 swt 组件支持包 swt.jar , jface 组件支持包 jface.jar 。这些包都要在 MANIFEST.MF 文件中设置好。
资源文件-例如程序中用到本地化文件,资源文件等,如图标,界面图像背景音乐等,需要把这些文件复制到程序运行目录,否则程序将无法运行。
创建一个mainclass.mf 打包清单文件,它是打包的关键性文件,可以用文本编辑器编辑,主要是设置执行入口类和支持库的路径,在运行 Java 应用程序时是要根据此文件中给出的信息来查找入口类和支持库。其内容类似如:
Manifest-Version: 1.0
Main-Class: com.mdragonway.agps.VGListener
Class-Path: ./lib/log4j.jar./lib/msbase.jar ./lib/mssqlserver.jar
./lib/msutil.jar ./lib/weblogic.jar ./lib/xbean.jar
说明:
Manifest-Version-指定清单文件的版本号
Main-Class-指定程序运行的入口类。注意:类名后不要加 class 扩展名
Class-Path-指定支持库的路径。“ . ”指程序运行目录,即导出的 JAR 包所在目录。程序运行时依据 Class-Path 项的设置路径来查找支持库。每一个支持库之间用空格隔开。在这里jface.jar 需要用到runtime.jar 包,所以runtime.jar 包也要加入到Class-Path 中。
除了入口类的包名和类名之外,其他设置项都不分大小写,比如:Class-Path 写成 class-path 或 CLASS-PATH 也可以, swt.jar 写成 SWT.JAR 也行。
用jar工具打包,打开cmd执行如下命令
jar cvfm Test1.jar mainclass.mf firstTest.class
该命令将所有相关文件归档到test.jar中,双击它时自动执行 manifrest.mf中规定的主类(含有main函数的类)。
其中:test1.jar为要生成的文件名称。
mainclass.mf可以用文本编辑器编辑。编辑mainclass.mf文件时需要注意的问题:
1. Manifest-Version、Main-Class和Class-Path后面跟着一个英文冒号,冒号后面必须跟着一个空格,然后才是版本号、类和ClassPath。
2. Class-Path中的各项应使用空格分隔,不是逗号或分号。
3. Class-Path中如果有很多项,写成一行打包的时候会报错line too long,这时需要把Class-Path分多行写。注意:从第二行开始,必须以两个空格开头。
4. Class-Path写完之后最后一定要有一个空行。
法二:用eclipse进行打包生成 .jar文件
用Eclpise的Export(导出)功能实现程序打包JAR文件,请参考另文。