补充JDK源码-IDEA集成工具

在阅读JDK8源码的时候发现,只有一小部分常用包是存在源码及其注释的,而很多内部包是没有源码,class文件在阅读的时候对阅读者十分不友好。在网上搜集了很多资料都没有解决问题。
解决问题办法:参考文档。本文主要是根据这篇文章记录下解决过程。(本来不想重写一遍,但是网上太多教程根本无法解决这个问题)

一、问题描述

在学习JDK动态代理源码时,发现Proxy是有源码及注释的,文件后缀为java。而在阅读到其又依赖的ProxyGenerator类时发现无法看到其源码注释,文件后缀为class。
在这里插入图片描述
在这里插入图片描述
没有源码可给阅读带来了极大的难度,尝试在网上搜索了一些资料,均不能解决问题。
根据参考文档,原因如下:
IDEA展现JDK8的源码路径如下:
在这里插入图片描述
加压src.zip:
在这里插入图片描述
从具体内容看,确实没有ProxyGenerator所在的sun包。那如何解决呢?

二、如何解决

① 下载JDK源码

git clone https://github.com/unofficial-openjdk/openjdk.git #克隆至本地

在这里插入图片描述
② 切换目录&分支

cd /${path2jdk}/openjdk  # 切换至jdk目录
git checkout jdk8u/jdk8u  # 切换至jdk8分支

查看分支文件:
在这里插入图片描述
③ 找到源码文件
我们需要的源码文件在:{path2jdk}/openjdk/jdk/src/share/classes/
在这里插入图片描述
④ 按需压缩源码文件
这里我仅需要sun包下的源码文件,压缩sun文件夹:
在这里插入图片描述

将压缩后的sun.zip文件放置在某目录下,如/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home/,并将sun.zip加入到IDEA的sourcePath中:
在这里插入图片描述

三、结果

问题完美解决:
在这里插入图片描述
【最后】本文用到的sun.zip已上传至资源(JDK中Sun包下源码zip文件),如果有其他子包需要,可自行下载或联系我上传更多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/78623.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全杂记 - 复现nodejs沙箱绕过

目录 一. 配置环境1.下载nodejs2.nodejs配置3.报错解决方法 二. nodej沙箱绕过1. vm模块2.使用this或引用类型来进行沙箱绕过 一. 配置环境 1.下载nodejs 官网:https://nodejs.org/en2.nodejs配置 安装nodejs的msi文件,默认配置一直下一步即可&#x…

Wordpress升级版本后插件和主题常见出错及处理方法整理【持续更新】

Wordpress报错怎么解决? 一般常用的排查方法: 暂时禁用所有插件;将主题更改为默认主题; 修改wp-config.php文件;更新固定链接设置,确保设置正确;检查.htaccess文件是否存在且是否可写&#xf…

ant.design 组件库中的 Tree 组件实现可搜索的树: React+and+ts

ant.design 组件库中的 Tree 组件实现可搜索的树,在这里我会详细介绍每个方法,以及容易踩坑的点。 效果图: 首先是要导入的文件 // React 自带的属性 import React, { useMemo, useState } from react; // antd 组件库中的,输入…

了解Linux 的 mmap --- 笔记

学习这篇博客,进行了一些归纳Linux下mmap_linux mmap_一个山里的少年的博客-CSDN博客https://blog.csdn.net/qq_56999918/article/details/127070280 >>读取文件 读取文件方法:由操作系统提供的两个方法,read和write来读写文件。 由…

【SpringBoot】知识

.第一个程序HelloWorld 项目创建方式:使用 IDEA 直接创建项目 1、创建一个新项目 2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现 3、填写项目信息 4、选择初始化的组件(初学勾选 Web 即可) 5、填…

flask中的应用上下文

flask中的应用上下文 Flask应用上下文主要包含两个对象:current_app和g。这两个对象在处理请求期间都是全局可访问的,但在每个请求结束时都会被重置。 current_app:这是当前激活的Flask应用的实例。在大多数情况下,你可以将其视为…

Git工具安装

Git 工具安装 1. 下载Git安装包2. 安装Git工具3. 简单的使用配置用户名 1. 下载Git安装包 打开官网 https://git-scm.com/downloads点击下载 2. 安装Git工具 右击以管理员身份运行 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9a99a73d54824800bc87db64f71f7602.png…

Vue3状态管理库Pinia——自定义持久化插件

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

Codejock Skin Framework Visual C++ MFC Crack

Codejock Skin Framework Visual C MFC Crack Codejock Visual CMFC皮肤框架为Windows开发人员提供了一种高度复杂的应用程序皮肤框架技术,该技术是在考虑Windows主题(视觉样式)的情况下开发的。只需几行代码就可以实现一个完全主题化的应用程序。 功能概述 Codejoc…

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 4

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

Element的Dialog+Form使用问题

在Element的Dialog中使用表单时&#xff0c;可能会出现以下问题 无法清空表单校验 <el-dialog title"新建资产" :visible.sync"addAssetsFormVisible" close"resetForm(addAssets)">resetForm (formName) {this.$refs[formName].resetFie…

2023-8-6 成年人交朋友,只筛选不改造。

前段时候&#xff0c;把Ex和相关的人都删掉了&#xff0c;又起了一次棺材。上次棺材给掀开&#xff0c;是因为肉桂拉小群又把我们拉一块。 我睡醒的时候看到了一堆的消息&#xff0c;他遇到麻烦想投靠我&#xff0c;还说以后要跟我混。他只有在遇到麻烦&#xff0c;遇到换工作…

前端CSS文字阴影text-shadow记录

前端CSS文字阴影text-shadow记录 一、文字阴影 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Doc…

【Redis】——AOF持久化

什么是AOF日志 AOF日志是redis为数据的持久化提供了的一个技术,日志里面记录着执行redis写命令。每当redis执行一条写命令的时候&#xff0c;就会将该命令记录 到AOF日志当中。当redis启动的时候&#xff0c;可以加载AOF日志中的所有指令&#xff0c;并执行这些指令恢复所有的…

Web3 solidity编写交易所合约 编写ETH和自定义代币存入逻辑 并带着大家手动测试

上文 Web3 叙述交易所授权置换概念 编写transferFrom与approve函数我们写完一个简单授权交易所的逻辑 但是并没有测试 其实也不是我不想 主要是 交易所也没实例化 现在也测试不了 我们先运行 ganache 启动一个虚拟的区块链环境 先发布 在终端执行 truffle migrate如果你跟着我…

使用WebMvcConfigurationSupport后导致原来返回的json数据变为了xml的解决方法

问题 未使用WebMvcConfigurationSupport拦截时返回的数据都是JSON格式&#xff0c;使用WebMvcConfigurationSupport做拦截后数据的返回变为了XML的格式。 原因 在Spring框架中&#xff0c;WebMvcConfigurationSupport 是一个类&#xff0c;它可以用于自定义Spring MVC的配置…

vue 标题文字字数过长超出部分用...代替 动态显示

效果: 浏览器最大化: 浏览器缩小: 代码: html: <div class"title overflow">{{item.name}}</div> <div class"content overflow">{{item.content}}</div> css: .overflow {/* 一定要加宽度 */width: 90%;/* 文字的大小 */he…

VB利用GDI+显示资源文件中的PNG文件

加载并打开资源文件&#xff0c;点击"添加自定义资源"&#xff0c;添加一个PNG文件&#xff0c;保存。 在代码编辑窗口复制粘贴以下代码,按F5运行后鼠标点击窗口即可显示资源文件中的PNG文件 Option Explicit Private Enum GpStatus Ok 0 GenericError 1 Invalid…

electron+vue+ts窗口间通信

文章目录 一. 目的二.逻辑分析三. 代码示例 "types/node": "^20.3.1","vitejs/plugin-vue": "^4.1.0","vueuse/electron": "^10.2.1","electron": "^25.2.0","electron-packager":…

DevOps在项目管理中的魔法:简化与深化

什么是DevOps&#xff1f; 定义与核心思想 DevOps, 这个名词&#xff0c;在技术领域中饱受瞩目。但它到底是什么&#xff1f;首先&#xff0c;DevOps并不仅仅是一个技术或者工具&#xff0c;它首先是一种文化&#xff0c;一种思想。DevOps是Development&#xff08;开发&#…