问题描述:在这次的netty调试过程中,由于Mac本机安装的是JDK11,导致了在调试的过程总无法引入 unsafe 类库,调试工作无法正常进行。
问题的解决过程:第一波操作,一顿google 网上有人说将报错的 Modules 标记为Sources,照做了,导致的结果是问题没有得到解决,还了一个新的错误Cannot compile Groovy files: no Groovy library is defined for module 'xx'。
额到这里更加懵逼了,然后又是一顿搜索。找到的方法是将idea里面的!?*.groovy 去掉,然后又是一顿操作,结果是又报了一个错误(Groovyc: Internal groovyc error: code 1)
到这里真的有点其人啊!然后又开始新一轮的搜索 ,然后没有然后了解决不了!!!委屈脸。。。。。。
然后去netty的github上看了看,发现有这么一个说法:Usage with JDK 9Netty can be used in modular JDK9 applications as a collection of automatic modules.The module names follow the reverse-DNS style, and are derived from subproject names rather than root packages due to historical reasons.They are listed below:
哎,不过由于英文水平太差还有这方面没有经验,实在是看不懂了。
无奈最后一招,换成JDK8,结果一点问题也没有。
总结 :感觉还是知识面太窄,这次的问题虽然解决了,不过造成这次问题的直接原因没有找出来,算是曲线救国吧。
不过有一个意外的收获,那就是Mac 可以安装不同版本的JDK而且可以任意切换,限于篇幅就不赘述了,简单说一下:
/*JDK11的安装目录*/
JAVA_11_HOME="/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home"
/*JDK的安装目录*/
JAVA_8_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home"
/*默认的JAVA_HOME用jdk8*/
export JAVA_HOME=$JAVA_8_HOME
/*配置PATH*/
PATH="$JAVA_HOME/bin:$PATH"
/*配置CLASSPATH*/
CLASSPATH="$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar"
export PATH
export CLASSPATH
/*定义控制台可以输入的 jdk8命令*/
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
/*定义控制台可以输入jdk11 命令*/
alias jdk11="export JAVA_HOME=$JAVA_11_HOME"
这样配置以后,只需要在控制台输入jdk8 或者 jdk11 就能进行相应版本的切换。不过这里有个问题需要注意一下,可能是用户权限的问题,每次执行完 jdk8 或者jdk11 以后需要再执行一次 source ~/.bash_profile。
简书处女作,有点简陋,愿意看的同学可以瞅瞅。这个问题我后序还会跟进,另外,准备分享一些调试netty源码的心得,希望同学们能多多执教。