Java 命令行工具使用(java编写命令行工具)

createh55个月前 (02-01)技术教程29

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

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

javac

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

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

用法: javac  

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

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

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

输入命令 javac Hello.java

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

class Hello {
    public static void main(String[] args) {
        System.out.println("Hello 苗子说全栈!");
    }
}

再次执行 javac Hello.java

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

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

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

java

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

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

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

执行之后, 就可以看到控制台输出了 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);
        }
    }
}

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

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

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

javah

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

javap

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

用法: javap  

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

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

jdb

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

用法:jdb <选项> <类> <参数>

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

jar

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

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

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

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

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



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

相关文章

为什么编译原理被称为龙书?(龙书 编译原理)

碎碎念为什么这本书叫做 龙书(Dragon book)?这本书很有意思,它的书名是 《Compilers: Principles, Techniques, and Tools》,也就是编译器的原则、技...

JAVA小白在CENTOS部署WEB JAR包(centos安装java环境)

在下虽然是文科生,但是对于计算机语言有兴趣,跟大家一起学习。1、安装JAVA环境。需要使用一个SSH工具,建议PUTTY。确保软件包最新:sudo yum update更换国内源备份REPO:sudo...

JAVA拾遗系列之JAVA基础-语法糖(java语言的语法)

一、概述Java语言发展至今,也在不断跟随时代的进步,增加了很多新特性。不过java中的语法糖只存在于编译期, 在编译器将 .java 源文件编译成 .class 字节码时, 会进行解语法糖操作, 还...

《JAVA程序设计》期末考试试题(java程序设计题库及答案)

《JAVA程序设计》期末考试试题一、选择题(4分/题,共10个,共40分)在Java语言中,下列哪个变量名是不正确的 ( )(A) large (B) 2much(C) $money (D) _pos...

Maven-插件(Maven插件下载)

什么是Maven插件?Maven实际上是一个插件执行框架,其中每个任务实际上都是由插件完成的。Maven插件通常用于-创建jar文件创建战争文件编译代码文件代码的单元测试创建项目文档创建项目报告插件通...