Java开发环境搭建与实验教程(适合自学)【2019.10.05修订】

66 篇文章 16 订阅
54 篇文章 12 订阅

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 或  jdk的实际安装路径\bin

变量名:JAVA_HOME   值:C:\Program Files\Java\jdk1.8.0_121 ,路径根据实际安装情况而定

说明:值中多项之间,用英文分号与之隔开。

bin目录下面都是各种编译执行命令;

. 英语句点表示当前路径。

1、JAVA_HOME环境变量的作用

设置JAVA_HOME为了方便引用,设置JAVA_HOME为某个目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串; 设置了JAVA_HOME值后,将%JAVA_HOME%"就代表它,配置path和classpath的变量值是可用%JAVA_HOME%"。

例如设置了JAVA_HOME

设置path编辑变量值时可用 %JAVA_HOME%\bin代表C:\Program Files\Java\jdk-11.0.1

path:这个变量的作用主要就是指定命令的搜索路径。这个就不做过多的解释。例子就是javac、java、jar等一些操作命令。如果你没有配置该路径的话,这些操作命令就会执行不了。

变量值中分量(用分号分开的部分)居前的优先,用户环境变量优先级高于系统环境变量!系统会先检查用户变量,发现变量名有定义,则取值  C:\aaa;C:\bbb,而不会再去检查系统变量是否存在,值是什么。如果用户变量没有定义,再去找系统变量。用户变量优先于系统变量。

2、CLASSPATH环境变量的作用
当javac在编译时,发现程序还引用了其他类时(如ExceptionDemo.java中引用了HelloWorldException类)时,javac程序是如何查找程序引用的其他类的呢?答案是按照CLASSPATH指定的路径加上程序所引用类的包名来查找的。
JDK包含的Java基础类(例如java.lang包中的类)并不需要指定CLASSPATH——Java知道如何找到它们。
当用java运行class文件字节码时, 这个变量设置的目的是为了程序能找到相应的".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,也可以不设置CLASSPATH这个环境变量,也能正常编译和运行Java程序,如果没有设置CLASSPATH环境变量,Java解释器将会在当前路径下搜索Java类。

3、 PATH环境变量的作用
PATH变量用来告诉操作系统到哪里去查找一个外部命令。在Windows中,CMD(指命令行程序cmd.exe)的命令如dir、cd等命令是内部命令,类似于DOS中的常驻命令。这些命令在命令行窗口启动时会自动加载到内存中,不需要到磁盘上去寻找对应的可执行文件,因此即使清空了PATH变量的值也不会影响这些命令的使用。然而,像java这样的外部命令,在执行时必须先由操作系统到指定的目录找到对应的可执行程序,然后才能加载并运行。到哪里去寻找这些程序就是依靠PATH变量来指定的。
原因很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 不想如此麻烦,你可以选择把 %JAVA_HOME%\bin添加到PATH路径下,这样,我们在任何路径下就可以仅用java来执行命令了。(当你在命令提示符窗口输入代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行。

变量值中分量(用分号分开的部分)居前的优先,如靠近PATH变量前部的路径中的程序将屏蔽其之后的路径中的同名程序。
用户环境变量优先级高于系统环境变量!系统会先检查用户变量,发现变量名有定义,则取值  C:\aaa;C:\bbb,而不会再去检查系统变量是否存在,且值为多少。如果用户变量没有定义,再去找系统变量。用户变量优先于系统变量。

特别提示,若系统里边装了2个以上的jdk版本,设置环境变量path,jdk路径靠前的优先。

 

之后,就可以进行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的类可以有零个或多个。否则出错不能编译成字节码。

main方法,是个特殊的方法,这是Java程序执行时的入口。

在Java源文件中,如果使用package语句,则package语句应作为第一条可执行语句(它的前面只能有注释或空行);如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包,即源文件中定义命名的类在同一个包中,但该包没有名字。

上面的程序定义了一个类(class)HelloWorld,然后定义了该类的一个方法(method)名为main。main方法中有一个语句:

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

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

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

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

 Javac D:\JavaTest\HelloWorld.java

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

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

使用java命令来运行:

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

可以看到结果出现:

Hello world

public static void main(String args[]) 注解

main是程序的入口方法,所以当程序运行时,第一个执行的方法就是 main()方法通常来讲,要执行一个类的方法,先必须实例化一个类的对象,然后通过对象来调用这个方法。但由于main是程序的入口方法,此时还没有实例化对象,因此在编写main()方法时就要求不需要实例化对象就可以调用这个方法,鉴于此,main()方法需要被定义成 public与 static。

参考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运行命令不支持带路径的文件名而只能是[类]文件名且不带扩展名,如 java D:\JavaTestDir\ch03\DemoA 将报错。若是路径问题导致java运行出错,处理方法较多:

1.用cmd的cd命令切换到.class 文件所在的目录  cd /d D:\JavaTestDir\ch03,再这样运行java DemoA

2.使用参数 -cp 或  -classpath,可这样执行

java -classpath D:\JavaTestDir\ch03 DemoA 或  java -cp D:\JavaTestDir\ch03 DemoA


3. 在CLASSPATH环境变量中,加入路径D:\JavaTestDir\ch03,再这样运行java DemoA

 

4.将.class 文件放到在java命令所在目录下,再这样运行java DemoA ,但一般不用

 

还有可能是java 源文件使用了package(包)语句 ,编译、运行未考虑到这点,命令使用不当导致的

例如一个Array.java 文件它的内容 

package frgo; //使用了package(包)语句
public class Array{
   ...
}

编译时使用-d选项。javac 的-d选项用于指定生成的class目标文件的目录,这样,则如果某个类是一个包的组成部分,则 javac 将把该类文件放入反映包名的子目录中,必要时自动补建目录。
可这样编译:javac -d D:\TestDir\ D:\TestDir\\Array.java

运行时需要按照:package.class文件名的形式进行执行
java frgo.Array

详细的情况 参看 使用JDK11命令行编译、运行Java程序 及相关常见问题的解决 :

https://blog.csdn.net/cnds123/article/details/101674527

 

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方法。

又,public static 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使代码更加简洁。

 

使用Windows自带的记事本程序,编辑代码时,如何更改文本文档文件扩展名?

事实上.java、.reg、.bat、.ini等,都是文本文件,只不过扩展名不同而已。编辑代码时,如何更改文本文档文件扩展名?

方法1、编辑完记事本文件内容后,单击“文件”菜单,在出现的下拉菜单中,选择“另存为”命令

  在记事本中保存文件时,用英文双引号(英文半角)把文件名括起来,如:"autoexec.bat",再保存就可以了。

方法2、在出现的“另存为”对话框界面,单击“保存类型”后面的向下小箭头,在出现的下拉选项中。单击选中“所有文件(*.*)”,是不是扩展名可以修改了,改成你需要的即可。

参见下图:

注意 :文件名中点后面的后缀(扩展名)不要错了。用记事本写java源码,如果代码中含有中文字符,编码选用ANSI,否则编译通不过,提示 “错误: 编码 GBK 的不可映射字符”。

 Java是分大小写的。一定要注意,Java的关键字是小写的;变量mon和Mon是不一样的。

一个java源文件可以包含多个class,但是只能包含一个public 的class,而且这个public class的类名要与这个.java的文件名一致。一个.java文件可以包含多个class,在编译的时候,编译器会为每一个class生成相应的class文件。

一个等号和两个等号的不同,在Java程序中,一个等号是赋值操作符,而两个等号则是比较操作符。

网络上学习Java的资源很多,但系统深入的不多,如何得到货真价实的比较令人头疼。所以探索性试验性学习应当发扬,你可以根据他所言试试,需要耐心细致,有时要多试几次。

 

Java常用的输入输出介绍

先看输出
使用System.out.println()或者System.out.print(),两者差不多,都是一个方法(method、类成员函数),能输出任意类型的数据,不同在于前者输出后会换行,后者输出后不换行。例
public class Main1{
    public static void main(String[] args){
        System.out.println("hello!");
        System.out.print("abc");
        System.out.print("123");
    }
}
 
再看输入
java怎么从键盘输入数据?需要引入包:
import java.io.*;
import java.util.*;

☆输入单个字符的例
import java.io.*;
public class Main2{
    public static void main(String[] args)throws IOException{
        System.out.print("请输入一个字符:"); 
        char c=(char)System.in.read();
        System.out.println("你的输入是:" + c);
    }
}


☆输入数或者字符串
import java.io.*;
import java.util.*;
public class Main3{
    public static void main(String[] args)throws IOException{
        Scanner cin=new Scanner(System.in);
        
        System.out.print("Please enter an integer:"); 
        int a=cin.nextInt(); 
        System.out.println(a);
        
        System.out.print("Please enter a floating-point number:"); 
        double b=cin.nextDouble(); 
        System.out.println(b);
         
        System.out.print("Please enter a word:"); 
        String str=cin.next(); 
        System.out.println(str);
    }
}

初学者要要明确:编程就是门技能,要多加练习。练习过程中手敲代码,在练习过程中理解和提升。不要急功好利,贪多,要找到好的学习资料认真研读实践。不要过早的使用集成开发环境(IDE) 

 

集成开发环境(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

Eclipse IDE官网:https://www.eclipse.org/downloads/

根据操作系统的位数(bit)32位或 64位选择相应位数(bit)的版本下载。Eclipse 是基于 Java 的可扩展开发平台,所以安装 Eclipse 前你需要确保你的电脑已安装 JDK,Eclipse 的安装非常简单,建议你下载压缩包版本(点击 Download Packages链接),下载时可能会跳转到一个需要你付费的页面,并不是eclipse需要付费,这只是请求你捐钱的,可以不管,解压完毕后即可使用,进入文件夹,红框如图所示就是eclipse的启动程序。

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→Installed JREs→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)中,如图:

 

顺便提示, 控制台程序(字符界面程序,没有可视化的界面)的数据输入,是在控制台中(Console)输入的。

 

下面eclipse设计一个简单的GUI(Graphical User Interface)程序

 

Java提供了三个主要包 做GUI开发:

java.awt 包,主要提供字体/布局管理器

javax.swing 包,主要提供各种组件(窗口/按钮/文本框)

java.awt.event 包,事件处理,后台功能的实现。

 

界面主要包括:

组件/控件,就是界面中的各种组成部分,比如:按钮、文本框、标签、表格…

容器,容器也是组件的一种,能容纳其它组件,比如:窗口、面板

布局管理器,组件在容器中的大小和位置由 布局管理器 控制。

 

常见的类/接口:

JFrame(窗口)、JPanel(面板)、JButton(按钮)、JTextField(文本框)、JLabel(标签)

 

常见的布局方式

FlowLayout(流布局)、BorderLayout(边框布局)、GridLayout(网格布局)

 

新建一个项目,使用文件菜单File -> New ->JavaProject:

输入项目名:testABC,单击“Finish”按钮。

 

因为我们是建立一个简单的程序,所以单击“Don’t Create”按钮

创建的项目testABC,并立即出现在右侧导航栏中。

 

为项目建立新类,展开项目testABC,右击src 使用右键快捷菜单,New -> Class

输入类名:testG ,选中public static void main(String[] arge),单击“Finish”按钮

 

将其中的代码改为:

package testABC;

 

import java.awt.FlowLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

 

public class testG {

    public static void main(String[] args) {

        JFrame jf = new JFrame("流布局DEMO"); //建立一个窗口

        FlowLayout fl = new FlowLayout();  //使用流布局

        jf.setLayout(fl);//修改布局管理

        JButton jb1 = new JButton("按钮1"); //创建一个按钮

        jf.add(jb1); //把按钮jb1放入窗口

        JButton jb2 = new JButton("按钮2");//创建一个按钮

        jf.add(jb2);//把按钮jb2放入窗口

        jf.setSize(600, 300); //设置窗口的大小

        jf.setLocation(300,200);//设置窗口的初始位置

        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口

        jf.setVisible(true); //显示窗口

    }

}

如下图:

 

单击工具栏运行按钮运行:

例子比较简单,还未为 按钮1、按钮2添加代码。

 

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文件,请参考另文。

使用Eclipse导出向导生成jar包:https://blog.csdn.net/cnds123/article/details/80463293







  • 25
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值