Java开发环境搭建与实验教程(适合自学)

Java开发环境搭建与实验教程

如何配置JAVA的环境变量

下载Java  JDKJDK包含JRESDKSoftware Development Kit 即软件开发工具包,可以包括函数库、编译程序等。JREJava RuntimeEnviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。)

可到网上搜索下载。

官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

下载后安装,默认安装即可。

 

下载JDK  安装包安装后,如何配置JDK环境变量呢?

windows xp中,右击“我的电脑”,单击“属性”,单击“高级”,单击“环境变量”;

Windows 7中,右键“计算机”单击“属性”,单击“高级系统设置”,单击“高级”

,单击“环境变量”。如图:


 win10配置系统环境变量

右键此电脑,属性,高级系统设置,系统属性,如下图:


 

在“系统变量”中,设置3项:JAVA_HOMEPATHCLASSPATH(大小写无所谓),若已存在则先选中再点击“编辑”,不存在则点击“新建”;

  在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安装路径。   

PATH变量用于列出可执行文件的搜索路径。因为通常是通过命令行的命令启动JAVAJAVAC等编译工具和解释工具,系统必须要知道他们所在的位置,PATH就是用来指明他们的位置的。

CLASSPATH该变量是JAVA加载类(class orlib)的路径。只有在classpath设置的路径中的类才能被加载。

设置JAVA_HOMECLASSPATHPATH的目的:

1,设置JAVA_HOME

一、为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.7.0目录里,则设置JAVA_HOME为该目录路径,那么以后你要使用这个路径的时候,只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串;

二、归一原则,当你JDK路径被迫改变的时候,你仅需更改JAVA_HOME的变量值即可,否则,你就要更改任何用绝对路径引用JDK目录的文档,要是万一你没有改全,某个程序找不到JDK,后果是可想而知的,系统崩溃!

三、第三方软件会引用约定好的JAVA_HOME变量,不然,你将不能正常使用该软件,以后用JAVA久了就会知道,要是某个软件不能正常使用,不妨想想是不是这个问题(如Apache Tomcat需要JAVA_HOME环境变量)

2,设置CLASSPATH

javac在编译过程中发现程序还引用了其他类时(如ExceptionDemo.java中引用了HelloWorldException类)时,javac程序是如何查找程序引用的其他类的呢?答案是按照CLASSPATH指定的路径加上程序所引用类的包名来查找的。

JDK包含的Java基础类(例如java.lang包中的类)并不需要指定CLASSPATH——Java知道如何找到它们。

这是一个很有趣,当然也比较折磨初学者的问题,这个变量设置的目的是为了程序能找到相应的".class"文件,举个例子:你编译一个JAVA程序A.java,会得到一个A.class的类文件,你在当前目录下执行java A,将会得到相应的结果(前提是你已经设置CLASSPATH . (英语句点)。现在,你把A.class移到别的目录下(例如 e:\ ),执行java A,将会有NoClassDefFindError的异常,原因就是找不到.class文件,现在你把CLASSPATH增加为 .;e:\ 再运行java A,一切正常, java命令通过CLASSPATH找到了.class文件!

如果使用1.5以上版本的JDK,也可以不设置这个环境变量,也能正常编译和运行Java程序,如果没有设置CLASSPATH环境变量,Java解释器将会在当前路径下搜索Java类。

3,设置PATH

PATH变量用来告诉操作系统到哪里去查找一个外部命令。在Windows中,如dircd等命令是内部命令,类似于DOS中的常驻命令。这些命令在命令行窗口启动时会自动加载到内存中,不需要到磁盘上去寻找对应的可执行文件,因此即使清空了PATH变量的值也不会影响这些命令的使用。然而,像java这样的外部命令,在执行时必须先由操作系统到指定的目录找到对应的可执行程序,然后才能加载并运行。到哪里去寻找这些程序就是依靠PATH变量来指定的。

原因很简单,你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗,不想如此麻烦,你可以选择把 %JAVA_HOME%\bin添加到PATH路径下,这样,我们在任何路径下就可以仅用java来执行命令了。(当你在命令提示符窗口输入代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序,并且执行。

系统PATH环境变量屏蔽了用户PATH环境变量。靠近PATH变量前部的路径中的程序将屏蔽其之后的路径中的同名程序。有三种方法来解决这个问题:

第一种方法是使用绝对路径,例如我们运行命令时使用 C:\Program Files (x86)\Java\jdk1.7.0\bin\java.exe(当然,.exe可以省略)而不是 java.exe (当然,.exe可以省略)。使用绝对路径时,操作系统会直接根据路径定位到命令所在的目录,不再通过PATH变量来查找。这种方法的优点是绝对不会导致命令的覆盖,但缺点也很明显:必须输入完整的路径来运行命令(通常也很长)。

需要注意的是,当绝对路径中存在空格时(如上面的例子那样),需要将命令用英文双引号引起来。在设置PATH变量时不需要这样做,操作系统会自动完成这件事。

第二种方法是将自己安装的JDK路径设置到系统PATH变量的开头,这样,操作系统查找命令时就会最先查找我们设置的路径。但这种方法的缺点就是可能会影响其他用户(设置在了系统PATH变量中),并且可能会影响其他程序(其他的JDK被我们的屏蔽了)。

第三种方法就是设置一个新的环境变量JAVA_HOME ,将其值设置为我们实际安装的JDK的路径,类似如  C:\ProgramFiles (x86)\Java\jdk1.7.0 ,我们运行时,只需输入 %JAVA_HOME%\bin\java 即可。

之后,就可以进行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)名为mainmain方法中有一个语句:

System.out.println("HelloWorld!");

它的功能是向终端输出字符串"HelloWorld!"。注意,Java中的语句要以英文分号(;)结尾 (C/C++相同)

在开始—运行中输入 cmd 打开命令提示符窗口

使用javac来编译成字节码文件:

 JavacD:\JavaTest\HelloWorld.java

当前路径下将生成字节码文件HelloWorld.class

字节码文件的后缀是 .class文件

使用java命令来运行:

进入D:\JavaTest\,再执行: JavaHelloWorld

可以看到结果出现:

Hello world

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 mainString[] args),如下:

  public class类名{

  …

  publicstatic void mainString[] 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公司开源,200111月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。虽然大多数用户很乐于将Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse的最大特点是它能接受由开发者自己编写的开放源代码插件,通过插件也可使其作为其他计算机语言比如C++Python的开发工具。

这需要下载EclipseIDE for Java Developers

可到网上搜索下载。根据操作系统的位数(bit32位或 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-VersionMain-ClassClass-Path后面跟着一个英文冒号,冒号后面必须跟着一个空格,然后才是版本号、类和ClassPath

2. Class-Path中的各项应使用空格分隔,不是逗号或分号。

3. Class-Path中如果有很多项,写成一行打包的时候会报错line too long,这时需要把Class-Path分多行写。注意:从第二行开始,必须以两个空格开头。

4. Class-Path写完之后最后一定要有一个空行。

法二:用eclipse进行打包生成 .jar文件

EclpiseExport(导出)功能实现程序打包JAR文件,请参考另文。




猜你喜欢

转载自blog.csdn.net/cnds123/article/details/80446598