IntelliJ IDEA引入第三方jar包或查看Java源码的时候报decompiled.class file bytecode version:52.0(java 8)错误的解决办法

引入第三方jar包或者查看Java源码的时候,经常遇到问题如下:

decompiled.class file bytecode version:52.0(java 8) ,open source file.

翻译一下上面的意思:(反编译 .class文件中的字节码 到Java 8 版本) 打开源文件

其实这个时候,你就得注意一下,你看到文件是 .class文件,还是 .java文件。

然后我就详细的总结了一下,二者的差别:

1.先是理论知识:

  • .java为Java的源文件后缀,编写的代码需要写在.java文件中。
  • 而.class是字节码文件,是.java源文件通过javac命令编译后生成的文件。
  • Java虚拟机就是去运行.class文件从而实现程序的运行。
  • jdk自带 .class 文件,在运行的时候,没必要每次都去把 .java 文件再编译一遍成 .class文件,去运行。
  • 也是为了加快代码执行速度。

2.具体的 .class文件和 .java文件的具体对比图,如下:

这个.java文件和我们自己写的.java文件一样,是可以打开看内容的。下面的jar里面的源码就打不开啦。

再看如下的2张图。继续理解一下上面的意思。

注意

  • 现在看到的是.class文件,我们知道自己的写的.java文件会经过编译器编译然后变成.class文件,然后才可以运行的。
  • 这可以看到.class文件内部的代码,估计都是编译器的功劳。但是可惜的是,丁点儿注释都没有。
  • 我记得eclipse里面这个时候,好像就是直接弹框让你打开源文件来着。

注意

  • 现在看到的是.java文件,和我们平时写的Java文件是一样样的。就是直接打开那个xxx-sources.jar的结果。里面注释啥的都有。
  • 这2个图对比,就可以发现。一般jar包是有2个类型的。结尾带-sources的和不带的。二者的差别,就如上所描述的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • Java中的Map允许有重复元素吗?

    Java中常见的三个集合接口:List.Set.Map,已经知道List中是允许有重复元素的,而Set中是不允许有重复元素的,那么Map中允许有重复元素吗? 查阅资料,发现是不可以的,因为map是无序的,它的查询需要通过key的值来查找,如果你定义两个同样的key,那么一个key就对应了多个值,这样就违背了java对map的定义,键和值是一一对应的.所以key不可以重复. 写个代码测试一下: package com.test.collection; import java.util.HashMa

  • Java与Python之间使用jython工具类实现数据交互

    最近有个功能需要java与python之间的数据交互,java需要把参数传给python,然后python计算的结果返回给java.于是就写了一个工具类. 首先,maven 需要加载jython的依赖.工具类代码如下: import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.poi.ss.formula.functions.T; import org.python.co

  • Java中byte输出write到文件的实现方法讲解

    简述: 观察Byte值转为字符写入文件 如果在java里用byte打印出来 只有33 到 126的输出字符比较正常 此外发现Byte值为13是空格,10是换行符 知识点: 1. String 转为Byte输出("UTF-8"格式) 2. FileOutputStream 使用输出文件流 代码: package testChar; import java.io.File; import java.io.FileNotFoundException; import java.io.FileO

  • Centos7.5配置java环境安装tomcat的讲解

    Tomcat是基于java语言的web服务器软件,本文主要介绍如何在centos7.5上配置java环境并安装tomcat 1.安装Java环境: 访问orcal官网下载JDK rpm包:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载完成后执行:rpm -ivh jdk-8u161-linux-x64.rpm进行安装,默认会安装到/usr/java目录下 安装完成后,修

  • java.util.Collection源码分析与深度理解

    写在开头 java.util.Collection 作为Java开发最常用的接口之一,我们经常使用,今天我带大家一起研究一下Collection接口,希望对大家以后的编程以及系统设计能有所帮助,本文所研究的jdk版本为jdk1.8.0_131 明确一下几点: Collection是接口,其继承了Iterable接口 Collection属于单值类型集合,重点子接口List接口和Set接口 Java.util.List接口(有序.不唯一) ArraryList ArrayList 是一个数组队列,

  • Java复制文件常用的三种方法

    复制文件的三种方法: 1.Files.copy(path, new FileOutputStream(dest));. 2.利用字节流. 3.利用字符流. 代码实现如下: package com.tiger.io; import java.io.*; import java.nio.file.*; /** * 复制文件的三种方式 * @author tiger * @Date */ public class CopyFile { public static void main(String[]

  • Java中Collection、List、Set、Map之间的关系总结

    初学java,单个的接触有点迷糊,所以总结下他们的关系 一.关系 Collection --List:以特定顺序存储 --ArrayList.LinkList.Vector --Set:不能包含重复的元素 --HashSet.TreeSet Map --HashMap.HashTable.TreeMap 二.分别讲解 Collection:Collection是一个父接口,List和Set是继承自他的子接口,Collection是最基本的集合接口,Java SDK中不提供直接继承自Collect

  • Java利用移位运算将int型分解成四个byte型的方法

    package 移位运算; public class 移位运算 { public static void main(String[] args) { //00000111 01011011 11001101 00010101 int n=123456789; //n为需要进行移位处理的32位int型初始值 byte[] a =chai(n); for (int i = 0; i < a.length; i++) { byte b=a[i]; System.out.print(b+" &qu

  • 实例讲解Java基础之反射

    前期准备 编写一个真实类phone,实现list接口 public class Phone implements List { public double price; public String name; public Phone() { } public Phone(double price, String name) { this.price = price; this.name = name; } public double getPrice() { return price; } p

  • C++/JAVA/C#子类调用父类函数情况总结

    时间久了就容易记不清了,特留存备用查看 c++ 1.构造函数调用   常用初始化列表  或者显示调用 1.1同一个类中构造函数调用构造函数   尽量不要这样做,因为结果不确定!避免麻烦 可以把共用的代码封装成一个私有的成员函数,然后在构造函数内统一调用. 1.2子类构造函数调用基类构造函数 -----基类有默认构造函数时,可以在子类不写,则隐式调用 -----基类无/有默认构造函数时,在子类构造函数初始化列表处调用,则显示调用     基类类名(参数) class Base { public:

随机推荐