赞
踩
如何配置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); //显示窗口
}
}
如下图:
单击工具栏运行按钮运行:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。