分享

Java 命令行工具使用

 深柏浅觅探 2022-11-12 发布于江苏

为什么要使用命令行工具, 默认 Java 的开发是没有 IDE (IDE 是 Integrated Development Environment) 的。 所以我们就需要使用命令行进行使用, 命令行应该可以溯源到计算机的第一代产品。 基本上现有的系统没有不支持这个环境的,各个操作系统有不同的命令行工具, 但是正在趋向于大统一。

这里我们先学习两个命令 javajavac。这两个基本上学习 Java 必备的命令。

javac

javac: Java 编程语言的编译器。 把 Java 源代码编译成字节码和对应的 class 文件。

前面的章节说过 Java 的运行机制, 所以 javac 应该是前期的编译过程,编译成 Java 虚拟机 JVM 能够识别的代码指令集。让我们看看 javac 都有哪些参数。

用法: javac <options> <source files>

让我们先编写一个简单的 Hello 程序。代码如下:

class Hello {    public static void main(String[] args) {        System.out.println('Hello Java!');    }}

并保存文件为 Hello.java ,在所在的目录上, 打开一个命令行工具,后续的演示都是使用 Windows 11 为主要的演示环境。

输入命令 javac Hello.java

文章图片1

执行之后, 会发现目录中多出来一个 Hello.class 的文件, 这个就是 javac 编译出来的字节码可以在 JVM 中运行的文件类型 .class。在编程语言开发中, 就会遇到一个避免不了的问题, 就是字符集的问题。 除非都是英文,否则就会出现编码集的问题。我们把上面的代码修改一下,加入一些中文。修改的代码如下:

文章图片2
class Hello { public static void main(String[] args) { System.out.println('Hello 苗子说全栈!'); }}

再次执行 javac Hello.java

文章图片3

使用 命令 chcp 查看系统编码是什么: chcp

文章图片4

而 936 是: 中国-简体中文 GB2312, 但是我们在写代码的时候, 现在的场景下多数都为 UTF-8。所以会出现编码不符。 无法编译。 这时候, 就可以使用 <options> 选项。指定编码集。

文章图片5

编译成功, 可以查看 Hello.class 文件编译之后修改的时间, 已经变化。 既然编译过了, 我们就可以使用 java 命令运行该程序。

java

启动 Java 应用程序 。主要用于运行 Java 应用程序。可以用于开发和部署。

用法:java [options] <主类> [args...] (执行类) 或  java [options] -jar <jar 文件> [args...](执行 jar 文件)     或  java [options] -m <模块>[/<主类>] [args...]java [options] --module <模块>[/<主类>] [args...] (执行模块中的主类)      或  java [options] <源文件> [args] (执行单个源文件程序)

可以看到 java 的命名后面出了选项之外还有一个 主类, 既然说到类, 就只需要类名就可以了。 上面的类名叫作 Hello 。所以命令就使用 java Hello:

文章图片6

执行之后, 就可以看到控制台输出了 Hello 苗子说全栈! 这说明我们的程序已经执行完毕了。

现在不需要知道上面代码的意思, 只需要过个眼熟, 知道有这个命令即可。 下一章节, 会针对这个简单的程序单独的分析。一一理解。

当然除了以上两个基本的命令外还有另外的几个基础的命令也可以了解一下。

javadoc

从 Java 源文件生成 API 文档的 HTML 页面 。

用法: javadoc [options] [packagenames] [sourcefiles] [@files]

案例演示

修改代码为如下所示:

/** * 只是为了演示 javadoc 命令的使用 * @author xymiao * @since 1 */public class Hello {    /**     * Hello Java 程序的主运行函数     * @param args 接收参数     */    public static void main(String[] args) {        System.out.println('Hello 苗子说全栈!');        for (String arg : args) {            System.out.println(arg);        }    }}
文章图片7

执行命令: javadoc -d docs -encoding UTF-8 Hello.java

我们使用 -d 指定对应的输出目录。 这里使用 docs,因为中间包含中文字符, 所以在执行的时候, 指定对应的字符集。

文章图片8

我们可以看到文档已经生成并放入了 docs 目录中。 进入文档, 找到 index.html 使用浏览器打开。 可以看到文档的内容。

文章图片9

javah

从 Java 10 以后去除了该命令, 具体参考 javac -h ,支持版本 Java 9 +, 这里不针对该命令进行过多的演示。

javap

反汇编一个或多个类文件, 官方反编译工具。

用法: javap <options> <classes>

这里指定的一个类, 所以需要先把源码编译成 .class 文件,然后使用命令 javap Hello 进行反编译。

文章图片10

这样我们就看到了部分的代码。如果想看源码内容, 推荐使用一些工具。 后续会详细说明。过个眼缘。

jdb

Java 的 debug 工具,用来定位查找并修复 Java 平台程序中的错误。

用法:jdb <选项> <> <参数>
文章图片11

加入断点, 分步执行。 过个眼缘。

jar

jar 创建类和资源的档案, 并且可以处理档案中的单个类或资源或者从档案中还原单个类或资源。

在 Java 9 之前用用来给 Java 打包应用程序或者小程序用。 但是从 JDK 11 开始不再支持这种方式, 并且在 JDK 9 开始, 可以用 jar 命令来创建模块化的 jar 文件。用来开发和部署。通常将模块打包成模块化 JAR 对使用会更加方便。

该命令暂不演示。 后续说过模块系统之后, 再来详解。

除了以上的命令之外还会有更多的命令。 不在这里进行详细的讲解。这里说基础的也是为了接下来的学习必要。

如果想了解更多可参考:Java Development Kit Version 17 Tool Specifications (oracle.com)

关注我, 全栈开发, 带你学习各类知识点。感谢您的观看, 希望你能有收获。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多