一、实验概述
本次Java实验任务是配置和应用JDK,以命令行操作来运行Java文件,学习Java的完全类和jar包的使用。
二、实验目的
1、掌握JDK开发环境的下载安装
2、掌握Java运行环境变量的配置
3、掌握利用完全类实现多Java文件同时编译的方法
4、了解Java的相关指令
5、掌握JDK版本的切换和使用方法
6、熟悉jar包的功能,实现软件复用
三、实验要求
1、jdk8开发环境的安装
2、class与classpath环境变量的设置
3、完全类的运行
4、javac与java的基本参数(-d -cp -version)
5、jar包的用法和实例
6、jdk版本切换
7、FX的设置和使用
四、实验设备及运行环境
1、实验设备:
笔记本电脑一台
2、运行环境:
操作系统 Windows 11 家庭中文版
软件环境 JDK8 11
五、实验步骤
1、jdk8开发环境的安装
前往ORACLE官网(https://www.oracle.com/)下载Java8。
在官网界面通过Products—Hardware and Software—Java路径点击进入Java产品选择,即进入下图所示界面,点击Download进入Java下载界面选择Windows64位的Java8。
下载后得到.exe文件,点击下载好的文件根据提示进行安装。
至此,JDK 8的安装完毕。
2、环境变量的设置
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。用户通过设置环境变量,来更好的运行进程。
安装好JDK8后进行环境变量设置。
(1)打开环境变量设置界面
(2)编辑环境变量
①配置Path
点击右下角的环境变量,新建一个环境变量JAVA_HOME,在系统变量下选择“新建”,变量名自命名,然后点击“浏览目录”,选择到jdk1.8.0_301文件夹,点击确定选择,再点击确定保存。
配置PATH路径。点击Path,选择编辑,进入界面后选择新建,点击浏览,选择到所安装的jdk1.8.0_301\bin的路径下,点击确定保存。
②配置classpath
classpath环境配置在系统变量下选择新建,变量名为classpath,先输入英文半角状态下的.,再以英文半角状态下的分号;分隔开来,再选择浏览文件,定位到jdk1.8.0_301\lib的文件下,点击确定保存,具体操作顺序如图所示。
至此,环境变量设置完毕。
3、完全类的运行
完全类是指带包名的类。
在新建记事本中输以下代码保存为.java文件进行编译运行测试:
package demo;
public class Test{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
点击win+R输入cmd进入命令行窗口输入指令 D:\JavaStudy\HOMEWORK\Experiment>javac Test.java 进行编译,再输入指令D:\JavaStudy\HOMEWORK\Experiment>java Test运行。结果显示,该代码是可编译的,但是不能成功运行。
输入java demo.Test时,有包的java程序文件路径中必须包含包名,并以包名结尾。jvm看了有包,于是将包转换为路径,即在 "<存放路径>\Java\jre1.8.0_301\lib\amd64\jvm.cfg"文件夹找到Test.class文件进行装载。此时没找到文件,使用-d . 让编译器以当前路径为基准自动创建包路径。
此时该路径下可以找到名为demo的包,再执行运行指令java demo.Test就可以成功运行了。
至此,完全类的运行完毕。
4、javac与java的基本参数
(1)-d参数的使用
-d命令将.java的字节码文件编译到classes目录下面。在命令行输入指令:javac -d . <Java文件名>.java
使用-d选项,可以指定编译过的程序要放在哪里,而不会放到默认的同一个目录下。更改路径操作:在命令行输入 -d ../<目录名> <Java文件名>.java 回车运行便可更改.java的字节码文件更改到目录名的目录下。
(2)-cp参数的使用
classpath是Java运行时环境搜索类和其他资源文件(比如jar\zip等资源)的路径。可以通过JDK工具(比如javac命令、java命令)后面的-classpath 参数设置classpath。完全类测试代码在-cp参数下运行命令及结果如下所示。
(3)-version参数的使用
-version用于输出当前版本信息,在命令行输入java -version即可获取当前使用的JDK信息。
5、jar包的运用和实例
(1)jar指令的用法
在命令行输入jar,可以得到jar指令的用法。
(2)jar包运用实例
在A.java文件保存的代码:
//A.java
package ch01;
public class A {
public void show_1(){
System.out.println("My name is ");
}
}
在B.java文件保存的代码:
//B.java
package ch01;
public class B{
public void show_2(){
System.out.println("QI LI");
}
}
在AB.java文件保存的代码:
//AB.java
package ch01;
import ch01.A;
import ch01.B;
public class AB{
public static void main(String[] args){
A a=new A ();
a.show_1();
B b=new B ();
b.show_2();
}
}
命令行输入javac -d out A.java B.java AB.java编译后得到对应的3个class文件如图所示。
ch01目录(下左图所示界面为ch01目录下文件)下创建MANIFEST.MF来描述哪个类带有main()方法。MANIFEST.MF内输入右图内容。
最后执行jar工具来创建带有所有类以及MANIFEST的JAR文件。
运行jar包。
至此,jar包的运用和实例演示完成。
6、jdk版本切换
在环境变量中设置以下JAVA变量,用-version参数检验是否完成版本切换。(感觉就是把对应版本的变量提到前面去。)
至此,JDK版本的切换完成。
7、FX的设置和使用
(1)javafx的环境配置
由于JDK11中缺少javafx文件包,在用JDK11编译图形程序时,编译不通过,因此我们需要下载javafx文件并配置环境变量,以进行图形程序的编译。
javafx文件包尽量不要下载在命名有空格的文件路径下,以免编译出错。在环境变量中添加一个变量JAVA_TO_FX,用于指向javafx的地址。首先打开环境变量设置,在系统变量下选择新建,变量命为JAVA_TO_FX,在新建系统变量的窗口下点开浏览目录,定位到所下载的javafx文件的lib目录下,以该路径作为变量值,随后点击确定完成系统变量的设置,设置步骤可参考下图。
在命令行窗口中输入并运行指令echo %JAVA_TO_FX%,若其能显示出javafx的lib目录的路径,即为配置成功。
(2)编译并运行图形程序
环境变量设置完成后,对图形程序代码进行编译和运行需要使用到指令
--module-path %JAVA_TO_FX% --add-modules javafx.controls
选择HappyFace.java作为javafx编译运行的测试代码。
import javafx.application.Application;
import javafx.scene.canvas.Canvas;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.stage.Stage;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.shape.ArcType;
/**
JavaFX Application that displays a happy face.
Author: Jane Q. Programmer
Revision of Listing 1.2.
*/
public class HappyFace extends Application
{
public static final int WINDOW_WIDTH = 400;
public static final int WINDOW_HEIGHT = 300;
public static final int FACE_DIAMETER = 200;
public static final int X_FACE = 100;
public static final int Y_FACE = 50;
public static final int EYE_WIDTH = 10;
public static final int EYE_HEIGHT = 20;
public static final int X_RIGHT_EYE = 155;
public static final int Y_RIGHT_EYE = 100;
public static final int X_LEFT_EYE = 230;
public static final int Y_LEFT_EYE = Y_RIGHT_EYE;
public static final int MOUTH_WIDTH = 100;
public static final int MOUTH_HEIGHT = 50;
public static final int X_MOUTH = 150;
public static final int Y_MOUTH = 160;
public static final int MOUTH_START_ANGLE = 180;
public static final int MOUTH_DEGREES_SHOWN = 180;
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception
{
Group root = new Group();
Scene scene = new Scene(root);
Canvas canvas = new Canvas(WINDOW_WIDTH, WINDOW_HEIGHT);
GraphicsContext gc = canvas.getGraphicsContext2D();
// Draw face outline
gc.strokeOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);
// Draw eyes
gc.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE, EYE_WIDTH, EYE_HEIGHT);
gc.fillOval(X_LEFT_EYE, Y_LEFT_EYE, EYE_WIDTH, EYE_HEIGHT);
// Draw mouth
gc.strokeArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT,
MOUTH_START_ANGLE, MOUTH_DEGREES_SHOWN, ArcType.OPEN);
root.getChildren().add(canvas);
primaryStage.setTitle("HappyFace in JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
}
编译命令:
javac --module-path %JAVA_TO_FX% --add-modules javafx.controls HappyFace.java
运行命令:
java --module-path %JAVA_TO_FX% --add-modules javafx.controls HappyFace
结果:
至此,FX的设置和使用演示完毕。
六、实验总结
七、参考文献
肯里克·莫克[美],沃特·萨维奇[美国].Java程序设计与问题求解.机械工业出版社,2019,03(01).