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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界