JDK工具包使用

简介: JDK工具包使用

java程序启动参数-D


用于设置系统属性值。相当于添加到System类中的props。


public final class System {
    private static Properties props;
    //根据key来获取对应的系统属性
    public static String getProperty(String key) {
        checkKey(key);
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPropertyAccess(key);
        }
        return props.getProperty(key);
    }
    //可设置对应的键值对
    public static String setProperty(String key, String value) {
        checkKey(key);
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPermission(new PropertyPermission(key,
                SecurityConstants.PROPERTY_WRITE_ACTION));
        }
        return (String) props.setProperty(key, value);
    }
}


实例演示


在执行字节码文件时,给命令后添加参数如:java -DChanglu=666"



设置虚拟机参数


@Test
public void test01() throws IOException {
    //调用该方法即可获取到changlu键对应的值666
    String str = System.getProperty("changlu");
    System.out.println(str);
}




JDK自带工具包


1、javap(反汇编器)


在jdk的bin目录下的一个反汇编器,可以查看编译器为我们生成的字节码。从而了解编译器在执行字节码的很多内部工作。


简单编译字节码文件


首先使用javac 类名.java将源代码转为字节码文件(.class后缀)。


反编译命令:javap 指定类.class进行反编译。


各种参数:


-help  --help  -?        输出此用法消息
 -version                 版本信息,其实是当前javap所在jdk的版本信息,不是class在哪个jdk下生成的。
 -v  -verbose             输出附加信息(包括行号、本地变量表,反汇编等详细信息)
 -l                         输出行号和本地变量表
 -public                    仅显示公共类和成员
 -protected               显示受保护的/公共类和成员
 -package                 显示程序包/受保护的/公共类 和成员 (默认)
 -p  -private             显示所有类和成员
 -c                       对代码进行反汇编
 -s                       输出内部类型签名
 -sysinfo                 显示正在处理的类的系统信息 (路径, 大小, 日期, MD5 散列)
 -constants               显示静态最终常量
 -classpath <path>        指定查找用户类文件的位置
 -bootclasspath <path>    覆盖引导类文件的位置


实例:


javap -c class文件名:代码进行反编译

javap -v class文件名:输出附加信息(包括行号、本地变量表,反汇编等详细信息)


2、jps(虚拟机进程监视器)


jps(Java Virtual Machine Process Status Tool):显示当前系统的java进程情况及进程id,主要在linux/unix平台上查看当前进程运行的相关信息,包含进程号。


实际案例:


1、jps:进程号+类名



2、jps -l:进程号+全限定类名(推荐使用)



3、jps -q:进程号




3、jstack(jvm堆栈跟踪工具)


jstack:java虚拟机自带的一种堆栈跟踪工具,可追踪指定的pid进程打印其中的堆栈信息。


实际案例:


1、jstack pid 进程号:查看指定进程号的堆栈信息,常用于排查死锁问题,配合jps获取到进程号。



4、jconsole(可视化管理工具)

Jconsole (Java Monitoring and Management Console):一种基于JMX的可视化监视、管理工具。能够进行线程监控、内存监控。


执行bin目录下的jconsole工具即可:jconsole



使用流程


选择指定的进程进行连接(该进程需要启动):







即可排查正在运行中的项目出现的死锁情况:




5、java


启动jar包


使用以下命令执行jar包时,会用到目录META-INF\MANIFEST.MF文件,在该文件中有一个Main-Class: xxx,说明是java -jar会执行的类


// 当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
java -jar xxxxx.jar
//当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行
java -jar xxxxx.jar &
 //意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
nohup Java -jar xxxxxx.jar &



6、jar


jar -cvf my.jar com\changlu\JVM\C.class:打包指定路径下指定包名中的Class类到名为my.jar的jar包中。


com\changlu\JVM\C.class则是指代当前目录下对应文件的指定类。


其他工具

jad(更强大的反汇编工具)

官网:https://varaneckas.com/jad/


相关命令文章:反编译工具jad 命令说明



windows平台:下载完之后直接解压即可。


Linux平台:解压之后,通过使用命令


如何使用?


将jad工具放置到需要反编译的目录下,执行命令jad -sjava Class文件名(反编译成java文件到当前目录)

相关文章
|
存储 算法 Java
“JDK简介:探索Java开发的核心工具包“
Java编译器(javac):JDK包含了Java编译器,可以将Java源代码编译为Java字节码。通过编译器,开发人员可以将Java源代码转换为可在JVM上运行的字节码文件。 核心类库(Core Libraries):JDK提供了丰富的核心类库,其中包含了常用的类和接口,用于处理字符串、集合、IO、网络通信等各种操作。开发人员可以利用这些类库来构建功能丰富的Java应用程序。 调试工具(Debugging Tools):JDK提供了一系列的调试工具,例如Java命令行调试器(jdb)、Java虚拟机调试接口(JVMTI)和Java VisualVM等。这些工具可以帮助开发人员查找和修复Jav
256 0
|
缓存 安全 Java
Java核心技术之核心类的使用(Spring Guava String JDK工具包)
Google开源Java工具库Guava+Apache Commons的核心类剖析
Java核心技术之核心类的使用(Spring Guava String JDK工具包)
|
Java 开发工具
JDK工具包:jshell
JDK工具包中的jshell的简要。 对于jshell工具:我们只需要编写核心结构的代码即可,减少了对于结构化的需求。
217 0
JDK工具包:jshell
|
4月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
427 3
|
1月前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
182 7
|
5月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
837 4
|
5月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
71 1
|
2月前
|
Oracle Java 关系型数据库
安装 JDK 时应该注意哪些问题
选择合适的JDK版本需考虑项目需求与兼容性,推荐使用LTS版本如JDK 17或21。安装时注意操作系统适配,配置环境变量PATH和JAVA_HOME,确保合法使用许可证,并进行安装后测试以验证JDK功能正常。
74 1
|
2月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
117 1
|
5月前
|
Java 开发工具
开发工具系列 之 同一个电脑上安装多个版本的JDK
这篇文章介绍了如何在一台电脑上安装和配置多个版本的JDK,包括从官网下载所需JDK、安装过程、配置环境变量以及如何查看和切换当前使用的JDK版本,并提到了如果IDEA和JDK版本不兼容时的解决方法。
开发工具系列 之 同一个电脑上安装多个版本的JDK