本篇文章主要介绍在MacOS
系统和Ubuntu
系统上如何编译OpenJDK
项目代码,并使用IDE
工具JetBrains CLion
(下文简称CLion
)来运行/调试OpenJDK
。文中仅包含两种操做系统的特定版本(MacOS 10.15
和Ubuntu 16.04
)下的方法,不一样版本下可能会略有差别。但愿对读者有必定的参考价值。html
整体来讲,编译OpenJDK11
在两种系统上都没有太大的阻碍,难度低于OpenJDK8
。编译OpenJDK8
在Ubuntu
上比较简单,在MacOS
上比较繁琐复杂。java
完成编译并实现调试OpenJDK
流程能够分为如下几个步骤:python
OpenJDK
项目源代码JDK
做为BootJDK
Running Configure
(配置)Running Make
(构建)CLion
并进行Run/Debug
配置其中3-6步对于不一样操做系统和不一样OpenJDK
版本差别较大,其他步骤差别较小,因此本文的行文顺序是先将1-二、7三部分以及一些前置知识作详细介绍。在以后的具体场景(不一样操做系统 + 不一样OpenJDK
版本)中针对对这些部分只作差别点的特殊说明。linux
编译调试的第一步固然是获取到OpenJDK
的源代码,获取方式主要有如下三种:c++
OpenJDK
官方的Mercurial
仓库下载OpenJDK
官方使用Mercurial
来进行版本控制。Mercurial
仓库地址:hg.openjdk.java.net/,主要项目地址:git
项目 | 地址 |
---|---|
jdk | hg.openjdk.java.net/jdk/jdk |
jdk8u | hg.openjdk.java.net/jdk8u/jdk8u… |
jdk11u | hg.openjdk.java.net/jdk-updates… |
经过这种方式下载源代码,须要先安装Mercurial
工具,并使用hg clone <url>
下载源代码。好比下载 jdk8u
使用以下命令:github
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/ 复制代码
这种方式下载比较慢,并且会有中断的状况,不推荐使用。shell
Git
仓库下载OpenJDK官方在GitHub
上有JDK项目的仓库镜像,主页地址:github.com/openjdk,主要项目地址:macos
项目 | 地址 |
---|---|
jdk | github.com/openjdk/jdk |
jdk11u | github.com/openjdk/jdk… |
jdk12u | github.com/openjdk/jdk… |
但在官方git
仓库中没有看到 jdk11
如下的版本。json
除此以外还有一些非官方的镜像Git
仓库。好比AdoptOpenJDK
项目,主页地址:github.com/AdoptOpenJD…,主要项目地址:
项目 | 地址 |
---|---|
jdk | github.com/AdoptOpenJD… |
jdk8u | github.com/AdoptOpenJD… |
jdk11u | github.com/AdoptOpenJD… |
使用这种方式须要安装git
工具,并使用git clone <url>
下载源代码。好比下载jdk8u
使用以下命令:
git clone https://github.com/AdoptOpenJDK/openjdk-jdk8u 复制代码
git
工具使用方便,而且比从官方Mercurial
仓库下载要快不少,推荐使用。
Mercurial
仓库或者Git
仓库 打包文件除此以外,OpenJDK
官方的Mercurial
仓库还提供了直接下载压缩包的入口,入口在各个项目页面左侧bz2
,zip
,gz
三个连接,点击便可下载。以下图所示:
一样在GitHub
上的每一个项目均可如下载ZIP
格式的打包文件。以下图所示:
显然这种方式的缺点是缺乏版本控制的能力,若是对项目代码进行了改动想要恢复是作不到的,也不可以方便地获取最新代码改动,可是相比前两种方式更下载更快,也不要任何额外工具。
让人以为矛盾的是,编译JDK以前咱们须要一个已经编译好的JDK
做为Boot JDK
。通常须要的JDK
版本是编译版本前一版本的JDK
,好比编译JDK8
须要JDK7
,编译JDK11
须要JDK10
。 有几种途径能够下载JDK
:
Oracle JDK
。下载须要登陆帐号OpenJDK
Oracle
提供的基于OpenJDK
的参考实现。但大部分只有Linux
版本
OpenJDK
。好比AdoptOpenJDK,可是没有jdk8
如下版本Linux
系统下,还能够经过软件包管理器(好比Ubuntu
下的apt
,Centos
下的yum
)下载安装JDK
CLion
对CMake
构建的项目支持很友好,但OpenJDK
项目是基于Make
构建的,对于使用Make
构建的项目,CLion
仍然能够经过Compilation Database
来导入项目,而不用将其修改成CMake
项目。同时也能经过Compilation Database
实现代码的分析、跳转等功能,这对于咱们进行代码调试颇有帮助。
有关于Compilation Database
的介绍能够参考这几篇文章:
Clang
官方的Compilation Database
介绍页面:JSON Compilation Database Format Specification — Clang 11 documentationCompilation database
的各类工具:Compilation database — Sarcasm notebookCLion
的帮助页面简要介绍了Compilation Database
,以及在CLion
的使用:Compilation Database - Help | CLion对于基于Make
构建的OpenJDK
项目来讲,有一些工具能够生成Compilation Database
,好比下面几个:
一般默认生成的Compilation Database
是一个compile_commands.json
文件。
除此以外,在OpenJDK 11u
及以后版本中,OpenJDK
官方提供了对于IDE
的支持,可使用make compile-commands
命令生成Compilation Database
,不须要使用额外的工具,具体命令能够查看看源代码目录下的\doc\ide.md
读者能够选择先跳过本小节,而后在完成前面几个步骤以后再来根据本小节进行导入调试。
对于如何在CLion
中管理基于Make
构建的项目,CLion
的官方帮助文档中有详细的介绍: Managing Makefile Projects。
参考上述文档,本小节简要介绍了如何在CLion
中导入OpenJDK
项目并运行/调试的方法。请注意小节中所展现的图示是基于Ubuntu 16.04
系统 + CLion 2020.1.1
环境下的,操做步骤基本也适用于MacOS 系统
下同版本的CLion
。
下载安装CLion
,并安装Makefile Support
插件。建议使用最新版本,比较老的版本是不支持Make
构建的项目的。
导入项目。打开CLion
,选择Open Or Import
,选择项目目录中的compile_commands.json
文件,弹出框选择Open as Project
,等待文件索引完成。
compile_commands.json
的生成方法及生成位置根据不一样的OpenJDK
版本略有不一样,具体位置请看下文具体场景的介绍。
建立自定义Build Target
。点击File
菜单栏,Settings | Build, Execution, Deployment | Custom Build Targets
,点击+
新建一个 Target
。
Name
:Target
的名字,以后在建立Run/Debug
配置的时候会看到这个名字Build
或者Clean
右边的三点,弹出框中点击+
新建两个External Tool
配置以下:# 第一个配置以下,用来指定构建指令 # Program 和 Arguments 共同构成了所要执行的命令 "make all" Name: make Program: make Arguments: all Working directory: {项目的根目录} # 第二个配置以下,用来清理构建输出 # Program 和 Arguments 共同构成了所要执行的命令 "make clean" Name: make clean Program: make Arguments: clean Working directory: {项目的根目录} 复制代码
ToolChain
选择Default
;Build
选择make
(上面建立的第一个External Tool
);Clean
选择make clean
(上面建立的第二个External Tool
)其中两个
External Tool
配置中make
的参数能够根据须要改变。通常状况用于Build
的配置与执行构建时make
的target
保持一致便可。
建立自定义的Run/Debug configuration
。点击Run
菜单栏,Edit Configurations
, 点击+
,选择Custom Build Application
,配置以下:
# Executable 和 Program arguments 能够根据须要调试的信息自行选择 # NameL:Configure 的名称 Name: linux-x86_64-normal-server-slowdebug # Target:选择上一步建立的 “Custom Build Target” Target: linux-x86_64-normal-server-slowdebug # Executable:程序执行入口,也就是须要调试的程序 Executable: 这里咱们调试`java`,选择`{source_root}/build/{build_name}/jdk/bin/java`。 # Program arguments: 与 “Executable” 配合使用,指定其参数 Program arguments: 这里咱们选择`-version`,简单打印一下`java`版本。 复制代码
若是不想每次运行/调试前都执行Build
操做(在这里就是Make
构建过程,比较耗时),能够在编辑页下方Before launch
框中删除Build
条目。
点击Run
/Debug
开始运行/调试。
gdb
(Ubuntu
下默认),调试的时候可能会发现gdb
报错:Signal: SIGSEGV (Segmentation fault)
。解决办法是,建立用户家目录建立.gdbinit
,内容以下:handle SIGSEGV pass noprint nostop
handle SIGBUS pass noprint nostop
复制代码
lldb
(MacOS
下默认),调试的时候可能会发现lldb
报错:SIGSEGV (signal SIGSEGV)
。解决办法是,在用户家目录建立.lldbinit
,内容以下:break set -n main -C "process handle --pass true --stop false SIGSEGV" -C "process handle --pass true --stop false SIGBUS" 复制代码
配合File Watchers
插件自动更新Compilation Database
(可选)
若是修改了项目代码,须要从新生成Compilation Database
,通常状况须要从新构建才能够。
若是不想每次都从新手动构建,可使用Files Watcher
插件来实现监听变动自动从新生成。详见:www.jetbrains.com/help/clion/…
咱们这里选择从AdoptOpenJDK
的GitHub
仓库下载源代码。
# 首先须要安装git工具(若是没有的话) sudo apt-get install git # 克隆项目代码,可能耗时较长 git clone git@github.com:AdoptOpenJDK/openjdk-jdk8u.git 复制代码
# 首先须要下载安装 JDK7 做为 BootJDK 方法见上文 # 安装编译器及构建工具 sudo apt-get install gcc g++ gdb make # 下载安装依赖包 sudo apt-get install libasound2-dev libfreetype6-dev libcups2-dev libfontconfig1-dev libxext-dev libxrender-dev libxtst-dev libxt-dev 复制代码
# 首先进入 OpenJDK8 源码目录 # 配置 sh ./configure --with-debug-level=slowdebug --disable-zip-debug-info --with-target-bits=64 --with-boot-jdk=/home/jiajiawang/software/jdk/jdk1.7.0_80 --with-freetype-include=/usr/include/freetype2 --with-freetype-lib=/usr/lib/x86_64-linux-gnu/ 复制代码
configure
参数说明:
参数 | 含义 |
---|---|
--with-debug-level | 调试信息的级别,可选值有release ,fastdebug ,slowdebug |
--disable-zip-debug-info | 禁止压缩调试信息,设置为true有助于调试 |
--with-target-bits | 选择32位或者64位,根据操做系统选择 |
--with-boot-jdk | BootJDK 的位置 |
--with-freetype-include --with-freetype-lib |
指定freetype 依赖位置,若是提示找不到freetype ,须要配置这两个参数 |
参数的更多说明及更多参数请参考:OpenJDK 8 Build README - Configure
咱们可使用两种工具来生成Compilation Database
# 下载Bear工具 sudo apt-get install bear # 构建,并使用bear工具生成Compilation Database bear make all 复制代码
# 须要保证有python环境 # 安装pip sudo apt-get install python-pip # pip安装 compiledb pip install compiledb # 构建,并使用compiledb工具生成Compilation Database compiledb make all 复制代码
更多make
的target
请参考OpenJDK 8 Build README - Make
若是没有报错,完成以后应该能够在./build/linux-x86_64-normal-server-slowdebug/jdk
目录下找到编译以后的JDK
,验证一下是否成功
~: cd build/linux-x86_64-normal-server-slowdebug/jdk/bin/ ~: ./java -version openjdk version "1.8.0-internal-debug" ...... 复制代码
同时项目根目录下应该同时有一个compile_commands.json
文件,而且不为空。
步骤参见上文
# 首先须要安装git工具(若是没有的话) sudo apt-get install git # 克隆项目代码,可能耗时较长 git clone git@github.com:AdoptOpenJDK/openjdk-jdk11u.git 复制代码
# 须要下载安装 JDK10 做为 BootJDK 方法见上文 # 安装编译器及构建工具 sudo apt-get install gcc g++ gdb make autoconf # 下载安装依赖包 sudo apt-get install libfreetype6-dev libcups2-dev sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev sudo apt-get install libasound2-dev libffi-dev sudo apt-get install libfontconfig1-dev 复制代码
# 配置 sh ./configure --with-debug-level=slowdebug --with-native-debug-symbols=internal --with-target-bits=64 --with-boot-jdk=/home/jiajiawang/software/jdk/jdk-10.0.2 复制代码
若是不成功,通常多是缺乏部分依赖,根据脚本给出的提示安装相应依赖便可。
configure
参数说明:
参数 | 含义 |
---|---|
--with-debug-level | 调试信息的级别,可选值有release ,fastdebug ,slowdebug |
--with-native-debug-symbols | 指定如何构建debug symbol ,可选值有none ,internal , external , zipped ,设置为internal 能够更好地调试 |
--with-target-bits | 选择32位或者64位,根据操做系统选择 |
--with-boot-jdk | bootjdk 位置 |
--with-freetype-include --with-freetype-lib |
指定freetype 依赖位置。若是提示找不到freetype ,须要配置这两个参数 |
参数的更多说明及更多参数请参考:OpenJDK 11 Build README - Configure
# 生成Compilation Database make compile-commands # 构建 make all 复制代码
更多make
的target
请参考OpenJDK 11 Build README - Make
完成以后应该能够在./build/linux-x86_64-normal-server-slowdebug/jdk
目录下找到编译以后的jdk,验证一下是否成功
~: cd build/linux-x86_64-normal-server-slowdebug/jdk/bin/ ~: ./java -version openjdk version "11.0.8-internal" 2020-07-14 ...... 复制代码
同时在/build/linux-x86_64-normal-server-slowdebug/
目录下会有compile_commands.json
文件,而且不为空。
大体步骤与前文介绍相同。 须要注意的是在选择/build/linux-x86_64-normal-server-slowdebug/
目录下的compile_commands.json
文件导入项目以后须要更改项目的根目录为源码的根目录
(这里也就是openjdk-11u
目录)。点击菜单Tools | Compilation Database | Change Project Root
,选择源码根目录
(openjdk-11u
),等待从新索引完成。
MacOS 10.15.5
环境下构建OpenJDK
与Linux
下步骤类似,可是因为OpenJDK 8
版本较老,其中一些依赖在MacOS 10.15.5
版本中已经没法找到,致使在配置构建过程当中会出现各类问题,本文给出了一种比较简单方便的办法。
咱们选择从AdoptOpenJDK
的github
仓库下载源代码
git clone git@github.com:AdoptOpenJDK/openjdk-jdk8u.git 复制代码
jdk7
做为bootjdk
,方法见文章开头。HomeBrew
。Homebrew
是一款MacOS
系统上的软件包管理系统。/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 复制代码
Xcode
。能够直接在App Store
搜索安装,也能够在developer.apple.com/download/mo…下载离线安装包安装。可使用xcodebuild
命令验证是否安装成功,正确输出版本号则代表正确安装。xcodebuild -version
复制代码
若是是离线安装的话,可能会报xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
错误,这是由于xcodebuild
找不到新安装的Xcode
,只须要执行下面这个命令便可。sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
复制代码
# 安装构建工具 brew install make 复制代码
# 安装freetype brew install freetype 复制代码
若是不对代码进行修改,在执行configure
的时候,会报各类错误。网上也有不少针对每种错误来修改源文件来解决报错的方法, 这里给出一种更为方便的方法。
GitHub
上的stooke/jdk8u-xcode10这个项目,提供了对openjdk8
的代码进行修改的patch
文件,对代码修改以后,就能够正常地configure
。
git clone git@github.com:stooke/jdk8u-xcode10.git 复制代码
这个项目自己提供了脚原本完成下载源码、下载依赖、代码修改、配置、编译、测试等工做,但咱们这里只使用其中的修改代码这部分。原项目中的README
可能已通过时了,经过查看其源代码中的build8.sh
文件,可以大概了解其中的执行逻辑,据此我将其中的修改OpenJDK8
代码的部分抽取出来,简化以下:
新建一个shell
脚本patch.sh
,内容以下:
#!/bin/bash # JDK8 源码所在目录 JDK_DIR=`pwd` # 下载的jdk8u-xcode10项目所在目录 PATCH_DIR="$(dirname $JDK_DIR)/jdk8u-xcode10" PATCH_DIR="$PATCH_DIR/jdk8u-patch" applypatch() { cd "$JDK_DIR/$1" echo "applying $1 $2" patch -p1 <$2 } patchjdkbuild() { echo "patch jdk" # JDK-8019470: Changes needed to compile JDK 8 on MacOS with clang compiler applypatch . "$PATCH_DIR/jdk8u-8019470.patch" # JDK-8152545: Use preprocessor instead of compiling a program to generate native nio constants # (fixes genSocketOptionRegistry build error on 10.8) applypatch jdk "$PATCH_DIR/jdk8u-jdk-8152545.patch" # fix WARNINGS_ARE_ERRORS handling applypatch hotspot "$PATCH_DIR/jdk8u-hotspot-8241285.patch" # fix some help messages and Xcode version checks applypatch . "$PATCH_DIR/jdk8u-buildfix1.patch" # use correct C++ standard library #applypatch . "$PATCH_DIR/jdk8u-libcxxfix.patch" # misc clang-specific cleanup applypatch . "$PATCH_DIR/jdk8u-buildfix2.patch" # misc clang-specific cleanup; doesn't apply cleanly on top of 8019470 # (use -g1 for fastdebug builds) #applypatch . "$PATCH_DIR/jdk8u-buildfix2a.patch" # fix for clang crash if base has non-virtual destructor applypatch hotspot "$PATCH_DIR/jdk8u-hotspot-8244878.patch" applypatch hotspot "$PATCH_DIR/jdk8u-hotspot-mac.patch" # libosxapp.dylib fails to build on Mac OS 10.9 with clang applypatch jdk "$PATCH_DIR/jdk8u-jdk-8043646.patch" applypatch jdk "$PATCH_DIR/jdk8u-jdk-minversion.patch" } patchjdkbuild 复制代码
而后执行这个脚本:
bash patsh.sh
复制代码
sh ./configure MAKE=/usr/bin/make --with-toolchain-type=clang --with-debug-level=slowdebug --disable-zip-debug-info --with-target-bits=64 --with-boot-jdk=/Users/jiajiawang/Software/jdk/jdk1.7.0_80.jdk/Contents/Home/ --with-freetype-include=/usr/local/Cellar/freetype/2.10.2/include/freetype2 --with-freetype-lib=/usr/local/Cellar/freetype/2.10.2/lib/ 复制代码
MAKE=/usr/bin/make
是可选的,若是下文使用Bear
来生成Compilation Database
,能够不加这个参数。
configure
部分参数说明以下:
参数 | 含义 |
---|---|
--with-toolchain-type | 使用的工具链类型,取值有gcc ,clang 等,可使用--help 来查看全部可选值 |
--with-debug-level | 调试信息的级别,可选值有release ,fastdebug ,slowdebug |
--disable-zip-debug-info | 禁止压缩调试信息,设置为true能够更好地调试 |
--with-target-bits | 选择32位或者64位,根据操做系统选择 |
--with-boot-jdk | bootjdk 位置 |
--with-freetype-include --with-freetype-lib |
指定freetype 依赖位置,在执行configure 时若是找不到freetype ,须要指定这两个参数 |
参数的更多说明及更多参数请参考:OpenJDK 8 Build README - Configure
一样咱们仍然可使用bear
或者compiledb
来生成Compilation Database
,可是使用bear
过程当中遇到一些问题比较繁琐,推荐使用compiledb
。
# 1. 请先确保安装了Python及pip 方法请自行搜索 # 2. 安装compiledb工具 pip install compiledb # 3. 构建,并使用compiledb工具生成Compilation Database compiledb make all COMPILER_WARNINGS_FATAL=false # 可使用 LOG=debug 选项来输出更为详细的信息 # compiledb make all LOG=debug COMPILER_WARNINGS_FATAL=false 复制代码
使用compiledb
可能会存在的问题是生成的compile_commands.json
文件中全部项的directory
项都是项目的根目录,致使一个头文件没法找到,导入CLion
时报错,代码定义及跳转无效。缘由是在MacOS
平台,编译构建使用的多是gmake
,而compiledb
对gmake
切换路径的操做没法捕捉到,致使路径所有都是根目录。解决办法就是显示指定使用make
而不是gmake
,指定方法就是上一小节中在Configure
时指定的MAKE=/usr/bin/make
参数。
上面咱们使用compiledb
工具来生成Compilation Database
,一样也可使用bear
工具来生成:
# 1. 首先须要关闭SIP,不然生成的 Compilation Database 可能会是空的 关闭SIP的方法请自行搜索 # 2. 安装bear brew install bear # 3. 构建,并使用bear工具生成Compilation Database bear make all COMPILER_WARNINGS_FATAL=false # 可使用 LOG=debug 选项来输出更为详细的信息 # compiledb make all LOG=debug COMPILER_WARNINGS_FATAL=false 复制代码
若是遇到执行命令遇到报错/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/stdio.h:107:15: fatal error: 'stdio.h' file not found
能够尝试执行以下命令:
sudo mount -uw /
sudo cp -R /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include /usr
复制代码
更多make
的target
请参考OpenJDK 8 Build README - Make
若是没有报错,完成以后应该能够在./build/macosx-x86_64-normal-server-slowdebug/jdk
目录下找到编译以后的JDK
,验证一下是否成功
~: cd build/macosx-x86_64-normal-server-slowdebug/jdk/bin/ ~: ./java -version openjdk version "1.8.0-internal-debug" ...... 复制代码
同时项目根目录下应该同时有一个compile_commands.json
文件,而且不为空。
须要注意在建立Custom Build Targets
时,新建的用于Build
的External Tool
中make
的参数中也要加上COMPILER_WARNINGS_FATAL=false
git clone git@github.com:AdoptOpenJDK/openjdk-jdk11u.git 复制代码
jdk10
做为bootjdk
,方法见文章开头。HomeBrew
。Homebrew
是一款MacOS
系统上的软件包管理系统。/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 复制代码
Xcode
。能够直接在App Store
搜索Xcode
安装,也能够在developer.apple.com/download/mo…下载离线安装包安装。可使用xcodebuild
命令验证是否安装成功,正确输出版本号则代表正确安装。xcodebuild -version
复制代码
若是是离线安装的话,可能会报xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
错误,这是由于xcodebuild
找不到新安装的Xcode
,只须要执行下面这个命令便可。sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
复制代码
brew install autoconf
brew install make
复制代码
# 安装freetype brew install freetype 复制代码
# 配置 sh ./configure --with-debug-level=slowdebug --with-native-debug-symbols=internal --with-target-bits=64 --with-boot-jdk=/Users/jiajiawang/Software/jdk/jdk-10.0.2+13/Contents/Home 复制代码
configure
参数说明:
参数 | 含义 |
---|---|
--with-debug-level | 调试信息的级别,可选值有release ,fastdebug ,slowdebug |
--with-native-debug-symbols | 指定如何构建debug symbol ,可选值有none ,internal , external , zipped ,设置为internal 能够更好地调试 |
--with-target-bits | 选择32位或者64位,根据操做系统选择 |
--with-boot-jdk | bootjdk 位置 |
--with-freetype-include --with-freetype-lib |
指定freetype 依赖位置,在执行configure 时若是找不到freetype ,须要指定这两个参数 |
参数的更多说明及更多参数请参考:OpenJDK 11 Build README - Configure
# 生成Compilation Database make compile-commands # 构建 make all 复制代码
完成以后,应该在/build/linux-x86_64-normal-server-slowdebug/
目录下会有compile_commands.json
文件。
更多make
的target
请参考OpenJDK 11 Build README - Make
完成以后应该能够在./build/macosx-x86_64-normal-server-slowdebug/jdk
目录下找到编译以后的jdk,验证一下是否成功
~: cd build/macosx-x86_64-normal-server-slowdebug/jdk/bin/ ~: ./java -version openjdk version "11.0.8-internal" 2020-07-14 ...... 复制代码
同时在./build/macosx-x86_64-normal-server-slowdebug/
目录下会有compile_commands.json
文件,而且不为空。
大体步骤与前文介绍相同。 须要注意的是在选择/build/macosx-x86_64-normal-server-slowdebug/
目录下的compile_commands.json
文件导入项目以后须要更改项目的根目录为源码的根目录
(这里也就是openjdk-11u
目录)。点击菜单Tools | Compilation Database | Change Project Root
,将项目的根目录设置为源码根目录
(openjdk-11u
),等待从新索引完成。