热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:高效编码JDK自带的命令行工具的使用还用不清楚的地方?快来看看这篇文章吧!!!

篇首语:本文由编程笔记#小编为大家整理,主要介绍了高效编码JDK自带的命令行工具的使用还用不清楚的地方?快来看看这篇文章吧!!!相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了高效编码JDK自带的命令行工具的使用还用不清楚的地方?快来看看这篇文章吧!!!相关的知识,希望对你有一定的参考价值。






您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧。小伙伴们有啥想看的,想问的,欢迎积极留言告诉我喔。 上一篇文章我们介绍了IDEA的调试技巧【高效编码】关于IDEA调试的点点滴滴都在此文了。领导看了都说好!!!!。开发工具的熟练使用可以有效提高我们的效率,但是这还不够,还有JDK我们也要熟悉起来。所以这一篇文章来了,它主要是讲述JDK自带的各种命令行工具的使用。也是属于操作类的文章,简单易懂,掌握之后受益良多。



文章目录


    • 总览
    • 准备工作
    • javac
    • javadoc
    • javap
    • jar
    • java
    • 延伸阅读
    • 总结





在这里插入图片描述

总览

JDK自带的命令工具都在C:\\Program Files\\Java\\jdk1.8.0_60\\bin 这个目录下,即JDK安装目录的bin目录下,这个里面有各种命令行工具,有用来监控虚拟机运行的命令,有用来故障排查的命令,还有一些基础命令。
在这里插入图片描述
下图是对本文即将介绍了几个工具命令以及它们的作用做的一个汇总表格。一共有6个命令。后面会详细的介绍每个命令的使用。
在这里插入图片描述

下面就分别详细介绍一下各个命令的使用吧,话不多说,让我们直入主题。


准备工作

为了测试方便,我们先准备一个用于测试的java源文件(即以.java为后缀的文件),上传到服务器上。上传了一个User.java文件。放在了/data/server/test-xiang 这个目录下,目录没有的话可以自行创建(目录可以不用相同,但需要的是一个新目录,方便后面查看效果)。


javac

首先粉墨登场的是我们的javac命令,这个命令作用是用于Java语言编译器,即将Java 源文件(.java文件)编译成一个类文件(.class文件)。
它的用法是:

javac <options> <source files>

用法非常简单&#xff0c;其中是各种操作符&#xff0c; 是源文件。
可以通过javac -help命令查看各种操作符的功能描述。如下图所示&#xff1a;
在这里插入图片描述
举个栗子吧&#xff0c;就拿前面已经上传的User.java文件为例&#xff1a;

javac -g /data/server/test-xiang/User.java

执行该命令之后&#xff0c;我们看到该目录下生成了一个同名的User.class文件&#xff0c;这个文件就是我们源文件编译之后的类文件&#xff0c;所有的Java源文件必须先编译成类文件&#xff0c;才能被JDK执行。
在这里插入图片描述
在这里插入图片描述


javadoc

说完了javac命令之后&#xff0c;我们接下来看看javadoc命令&#xff0c;这个命令的作用就是生成API文档。其用法是&#xff1a;

javadoc [options] [packagenames] [sourcefiles] [&#64;files]

其中&#xff0c;[options] 表示操作&#xff0c;[packagenames]表示包名&#xff0c;[sourcefiles]表示源文件&#xff08;即.java文件&#xff09; 同样的可以通过javadoc -help 查看各个操作的作用描述。
在这里插入图片描述
举个栗子&#xff1a;显示User.java中所有的public类和成员,生成相关的文档。

javadoc -public /data/server/test-xiang/User.java

执行该命令之后会生成如下文件&#xff1a;
在这里插入图片描述


javap

接下来介绍是javap 这个命令&#xff0c;这个命令的作用就是类文件反汇编器&#xff0c;主要是根据Java字节码文件反汇编为Java源代码文件。说白了&#xff0c;就是可以按需查看类文件的信息。其用法是&#xff1a;

javap <options> <classes>

是各种操作&#xff0c;是类文件&#xff0c; 同样的还是可以通过javap -help查看一下各种操作的解释吧&#xff01;
在这里插入图片描述
举个栗子&#xff1a;比如我要显示类文件中所有公共成员&#xff08;即被public修饰的方法和变量&#xff09;

javap -public /data/server/test-xiang/User.class

在这里插入图片描述


jar

接下来介绍的是jar命令&#xff0c;这个命令的主要作用是创建和管理jar文件。它的用法是:

jar {ctxui}[vfmn0PMe] [jar-file]
[manifest-file] [entry-point] [-C dir] files ...

{ctxui} 表示这一部分可以输入 c&#xff0c;t&#xff0c;x&#xff0c;u&#xff0c;i 中的一个。
[vfmn0PMe] 表示可以输入vfmn0PMe中的多个&#xff0c;比如输入 vf 表示答应压缩信息&#xff0c;并指定压缩文件名
[jar-file] 可以设置jar的文件名。
我们可以通过命令jar -help 查看各个选项的功能描述&#xff0c;如下图所示&#xff1a;
在这里插入图片描述
这里有一个非常清晰的描述&#xff0c; 比如-c 命令就是创建新jar包&#xff0c;-f 就是指定jar的名称
比如&#xff1a;将两个类文件归档到一个名为classes.jar的档案中&#xff0c;可以输入如下命令&#xff1a;

jar cvf classes.jar Foo.class Bar.class

再比如&#xff1a;将文件夹下已经有了User.java 和User.class 两个文件打包到一个jar文件中&#xff0c;那么可以通过jar命令将这两个文件打包

jar cvf test.jar User.java User.class

在这里插入图片描述
执行命令之后&#xff0c;就可以看到目录下已经生成了一个名叫test.jar的文件。在对该文件进行解压看看&#xff0c;可以看到有User.jar文件和User.class文件。是不是非常的简单呀。

jar -xvf test.jar

在这里插入图片描述


java

接着就是介绍Java这个命令了&#xff0c;这个命令非常非常的重要&#xff0c;必须要画五角星重点掌握。这个命令的作用主要有两个。
一个是执行类&#xff08;这里的类是指含有main函数的类&#xff09;&#xff0c;用法是&#xff1a;java [-options] class [args...]
一个是执行jar文件&#xff0c;用法是&#xff1a;java [-options] -jar jarfile [args...]
当然我们还可以通过java -help命令查看其他的操作命令。
在这里插入图片描述
举个栗子&#xff1a;


  • 直接执行主类&#xff0c;如下有这样一个有main方法的主类&#xff0c;该主类没有包名。

public class JavaOptionTest {
public static void main(String[] args){
System.out.println("测试java命令的执行");
}
}

如果我们要想在linux下直接运行该类的话&#xff0c;只需要步&#xff1a;


  • 将源文件编译成类文件&#xff08;.class文件&#xff09;javac JavaOptionTest.java
  • 通过java命令执行main函数java JavaOptionTest
    在这里插入图片描述
    我们可以看到控制台打印出来我们期待的结果。
    那么问题来了&#xff0c;如果一个主类带有包名的话&#xff0c;那么该如何执行呢&#xff1f;首先需要进入包名所在父目录&#xff0c;就像下图中进入D:\\workspace\\java-base-demo\\target\\classes目录&#xff0c;然后带包名运行&#xff1a;

java com.jay.base.JavaOptionTest

在这里插入图片描述
在执行类中有的小伙伴可能会碰到类似这样的问题&#xff1a;

错误: 找不到或无法加载主类 com.jay.base.JavaOptionTest

这是因为在你当前的执行命令的目录下面找不到 com.jay.base这个路径&#xff0c;所以找不到JavaOptionTest类文件


  1. 执行jar包&#xff0c;如下在target目录下有一个springboot项目的jar直接通过java命令即可启动该项目。

java -jar testng-spring-boot-demo-0.0.1-SNAPSHOT.jar

在这里插入图片描述


延伸阅读

直接通过java命令启动jar包的话&#xff0c;有个问题就是当窗口连接关闭之后服务也就停了&#xff0c;即这样启动不是后台启动应用的。要想在后台启动服务还是需要通过nohup命令来启动服务
标准的启动命令是&#xff1a;

nohup java -jar testng-spring-boot-demo-0.0.1-SNAPSHOT.jar &

指定端口&#xff0c;指定运行内存的启动命令是&#xff1a;

nohup java -Xms1024m -Xmx2048m -jar testng-spring-boot-demo-0.0.1-SNAPSHOT.jar --server.port&#61;9393 &

这个命令表示指定初始堆内存&#xff08;Xms&#xff09;为1024mb&#xff0c;最大内存是2048mb&#xff0c;启动端口是9393。这样执行的话会在执行命令的目录下生成一个 nohup.out文件记录启动日志。当然我们也可以指定一个文件记录启动日志&#xff0c;如下命令&#xff1a;

nohup java -Xms1024m -Xmx2048m -jar testng-spring-boot-demo-0.0.1-SNAPSHOT.jar --server.port&#61;9393 > log.file 2>&1 &

就指定生成了log.file文件来记录启动日志。
在这里插入图片描述


总结

本文详细介绍了基础部分的各种命令行工具&#xff0c;作为一个Java程序猿熟练的掌握这些命令的使用还是很有必要的&#xff0c;我觉得这里最最重要的命令是java命令。希望本文对读者朋友们有所帮助。






推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
author-avatar
佛祖上帝真主保佑我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有