【java】查看Java字节码文件内容的方法+使用javap找不到类 解决方法

研究synchronized底层实现,涉及到查看java字节码的需要

前提是,你的PC已经成功安装了JDK并别配置了环境变量。

==========查看方法=========

一.javap查看简约字节码方式

1.准备一个java文件

例如,文件所在目录在此处

Student.java文件内容如下:

package com.sxd.sweeping.test.synchron;

public class Student  implements  Runnable{

    static int age;

    public static synchronized  void add(){
        age++;
    }

    @Override
    public void run() {
        int size = 100000;
        for (int i = 0; i < size; i++) {
            add();
        }
    }

    public static void main(String[] args) {
        Thread thread1 = new Thread(new Student());
        Thread thread2 = new Thread(new Student());

        thread1.start();
        thread2.start();

        try {
            thread1.join();
            thread2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(Student.age);
    }
}

2.CMD进入该目录下

3.执行命令查看简约字节码信息

javap -c Student

报错提示:

找不到类

文末查看解决方法

4.查看到的简约字节码信息如下

二.查看java详细字节码信息

1.使用javap -verbose 命令查看详细字节码信息

javap -verbose Student

==========报错解决=========

1.javap查看字节码,提示找不到类

报错提示:

找不到类

解决方法:

先执行一次javac命令,在此处生成class文件后,再执行javap命令即可。

如下:

先执行

javac Student.java

再执行

javap -c Student

原文地址:https://www.cnblogs.com/sxdcgaq8080/p/11184584.html

时间: 2024-10-11 13:22:29

【java】查看Java字节码文件内容的方法+使用javap找不到类 解决方法的相关文章

java爬虫爬取的html内容中空格(&amp;nbsp;)变为问号“?”的解决方法

用java编写的爬虫,使用xpath爬取内容后,发现网页源码中的 全部显示为?(问号),但是使用字符串的replace("?", ""),并不能替换,网上找了一下,大概意思是显示的这个问号其实并不是问号,是乱码,主要是由于编码的问题导致的. 解决方法如下: //替换抓取内容中“ ”变为问号的问题 try { intro = new String(intro.getBytes(),"GBK").replace('?', ' ').replace('

JAVA字节码文件之第二篇(常量池)

一.常量池的内容 一个java类中定义的很多信息都是由常量池来维护和描述的,可以将常量池看作是class文件的资源仓库,比如java类中定义的方法与变量信息.常量池中主要存储两类常量:字面量(文本字符串,final的常量)与符号引用(类和接口的全限定名,字段的名称和描述符,方法的名称和描述符 一.常量池的结构 二.常量池的分析 常量池(也称常量表):主版本号之后就是常量池的开始位置:java类所对应的常量池主要由常量池数量和常量池数组两部分组成,常量池数量是主版本号之后的两个字节:常量池数组在常

java 字节码文件详解

每一个class字节码文件都唯一对应一个类或接口,class文件中记录中类或接口的基本信息,但反之不成立,不是每一个类或接口都有一个唯一对应的字节码文件,首先类或接口的字节码可以不以文件的方式存储,可以直接从内存中生成字节码,而不产生.class文件,动态代理的原理就是直接内存中生成字节码流,根据加载字节码流进行类加载操作,类实例化,生成代理对象. 字节码文件记录的信息:魔术,class文件主次版本,常量池数量及常量池表,类或接口的访问标志,类索引,超类索引,接口数量及接口表,字段数量及字段表,

java中三种方式获得类的字节码文件对象

package get_class_method; public class ReflectDemo { /** * @param args */ public static void main(String[] args) { getClassObject1(); getClassObject2(); getClassObject3(); } public static void getClassObject1(){ Person p = new Person(); System.out.pr

字节码文件初探

程序员编写的Java源文件(.java)经过编译,生成字节码文件(.class). Java程序的运行需要JVM(Java虚拟机,Java Virtual Machines)支持.JVM是一个软件,安装在操作系统中,为字节码文件提供运行环境. Java官方提供了针对不同平台的JVM软件(比如JVM  for Linux, JVM for Windows等),只要是标准的字节码文件,就可以在不同的JVM上运行且运行效果相同,这就是一次编程到处使用(也是Java程序的一个明显优点). 而其它语言,如

字节码文件的分析

//环境的搭建: 1.创建一个类并编译它 2.使用java命令:javap -c -verbose build/classes/java/main/com/yang/jvm/Test.class 将16进制的字节码文件转成可视化的文件内容如下: 具体内容如下: Classfile /F:/jvmdemo/build/classes/java/main/com/yang/jvm/Test.class Last modified 2019-10-17; size 573 bytes MD5 chec

Android-Java-synchronized静态方法&amp;字节码文件对象

上一篇博客 Android-Java-同步方法-synchronized,中讲解了普通方法加入synchronized修饰符,此synchronized的同步锁是this,还介绍方法的封装性,这篇博客就不讲方法的封装性了 先看一个 静态方法加入修饰符synchronized(案例) package android.java.thread12; /** * 售票业务 */ class Booking { /** * 模拟票的总算 10张票 */ private static int ticket

Eclipse打开时“发现了以元素&#39;d:skin&#39;”开头的无效内容。此处不应含有子元素的解决方法

把有问题的 devices.xml 文件删除,再在sdk 里面 tools\lib 下找到devices.xml 文件,将这个文件拷贝到你删除的那个文件夹里,重启 eclipse 就 OK 啦! Eclipse打开时"发现了以元素'd:skin'"开头的无效内容.此处不应含有子元素的解决方法 原文地址:https://www.cnblogs.com/xiaolei-11/p/8776389.html

网站内容不被百度收录的原因反思及解决方法!

大发迹创业项目网有个网站百度已经没有一个月收录,站长也是着急,于是想着应该怎么解决这个问题.其实网站出了问题,站长应该是最清楚的,所以不要急,仔细回想一下最近操作了什么,然后一个一个去排查就可以找出问题所在,对症下药就ok了. 比如我的这个网站,想要找出问题所在就很简单.回想一下网站也没有做什么优化,建成之后就是单纯的发布内容,网站主要是推荐一些小项目,围绕着项目写文章. 网站几乎是天天更新,终于没有灵感,不知道怎么写了,就开始犯愁了.某一天灵机一动,想着以项目推项目,利用其它的项目来推荐自己操