Java文件的 编译、打包、运行

 


1.Java环境(JVM、JDK、JRE的关系)

复制代码
JDK(Java Development Kit) :
    JDK是 Java 语言的软件开发工具包(SDK)
        包含了 JVM + JRE + JAVA工具(jar、javac、java)

JRE(Java Runtime Environment) :
    Java程序的运行环境
        包括Java虚拟机(jvm)、Java核心类库和支持文件
        不包含开发工具(JDK)--编译器、调试器和其它工具

JVM(Java Virtual Machine) :
    运行所有Java程序的抽象计算机,是Java语言的运行环境
复制代码

 

 

2.Java程序开发步骤

 

 

3. 关于编译-javac

3.1 什么是编译

将 java文件 转换成 class文件

 在 java中使用 jdk提供的工具进行编译
  语法:
  javac <options> <source files>

3.2 编译 单个无包结构的 java文件

复制代码
//1. 创建 One.java 文件

public class One {
    public static void main(String[] args) {
        System.out.println("One启动了");
    }
}

//2. 执行编译命令,生成 .class 文件
javac One.java
生成: One.class

//3. 运行 .class 文件
java One
One启动了
复制代码

3.3 编译 单个有包结构的 java文件

复制代码
//1. 在 com/gc/jar目录下 创建 Two.java 文件

package com.gc.jar;

public class Two {
    public static void main(String[] args) {
        System.out.println("Two启动了");
    }
}


//2. 执行编译命令,生成 .class 文件
javac com/gc/jar/Two.java
生成: Two.class

//3. 运行 .class 文件
java com.gc.jar.Two
Two启动了
注意: java 必须在 com上级目录中 执行 
复制代码

3.4 编译 多个java文件

复制代码
//1. 创建 One.java Two.java 文件

public class One {
    public static void main(String[] args) {
        System.out.println("One启动了");
    }
}

public class Two {
    public static void main(String[] args) {
        System.out.println("Two启动了");
    }
}


//2. 执行编译命令,生成 .class 文件
javac *.java
生成: One.class
     Two.class

//3. 运行 .class 文件
java One
java Two
One启动了
Two启动了
复制代码

3.5 思考: 一个 java文件中 可以定义多少个class?

复制代码
1. 没有个数限制
   但是 一个 java文件中 只能定义一个 public类,且必须与文件名称相同
2. 思考: public的作用是什么?
   访问范围限制:
      被 public修饰的class,可以在 其他包被访问
      没有被 public修饰的class,只能在本包内访问

示例:

1.创建 gc.java (定义多个 class)

class One {
    public static void main(String[] args) {
        System.out.println("One启动了");
    }
}

class Two {
    public static void main(String[] args) {
        System.out.println("Two启动了");
    }
}

2. 编译
javac gc.java
生成: One.class
     Two.class
复制代码

4. 关于打包-jar

https://www.cnblogs.com/bajiaotai/p/16791446.html

5. 关于执行-java

5.1 关于 java命令

复制代码
功能: 
    Java解释器,运行指定的 class文件,并生成 java进程

语法: 
    方式1: 执行指定类
        java [-options] class [args...]

    方式2: 执行指定jar
        java [-options] -jar jarfile [args...]

参数: 
    -cp|-classpath: path|zip|jar
        指定 java运行时 从哪里去寻找 指定类的 .class文件
        参数必须是: 目录、zip、jar
        多个参数时: 用 :分割
        默认参数为: 当前目录

    -D<名称>=<值>
          设置系统属性
复制代码

5.2 classpath 是什么?

复制代码
    classpath 是 java运行时 告诉jvm从哪里取寻找要执行的 .class文件
    在 idea环境中 就是 
            src/main/java 之后的相对路径
    在 maven工程中 就是
            target/classes 之后的相对路径
    在 执行 java命令时
        classpath 路径默认为 当前路径
配置环境变量:
      
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/usr/local/lib/antlr-4.0-complete.jar
复制代码

5.3 案例1: 运行 指定class文件中的 class

    java -cp /usr/local/lib Two
    注意: /usr/local/lib 必须存在 Two.class

5.4 案例2: 运行 指定jar包中的 class

    java -cp /usr/local/lib/gc.jar Two

5.5 案例3: 运行 指定jar

    java -jar /usr/local/lib/gc.jar
    注意: 这种运行方式 jar中的 MANIFEST.MF 必须配置了 Main-Class: One

 

 

 

 

 

 

 

 

 

 

 

 

posted @   学而不思则罔!  阅读(260)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示