编译环境以及依赖

macOS:Sierra,10.12.6

处理器:2.6 GHz Intel Core i7

内存:16 GB 2133 MHz LPDDR3

Command Line Tools (macOS Sierra version 10.12) for XCode: Version 9.2

Boot JDK: jdk1.8.0_131

安装Homebrew

homebrew是macOS 缺失的软件包管理器。安装指南参考官方网站

安装Mercurial

$ brew install mercurial 安装mercurial,它是OpenJDK的版本管理工具,只是为了下载OpenJDK的源代码。如果实在不想安装这个奇怪的工具,可自行在github上找个人的OpenJDK fork repo,然后就可以使用Git工具了。

安装freetype

$ brew install freetype 我在编译的过程中没有进行这一步,如果遇到缺少freetype的错误可使用homebrew安装。

编译OpenJDK9

  1. 获取源代码

    $ hg clone http://hg.openjdk.java.net/jdk9/jdk9 OpenJDK9
    $ cd OpenJDK9
    $ bash ./get_source.sh

  2. 编译配置

    bash configure --disable-warnings-as-errors --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/
    

    --disable-warnings-as-errors:禁用将警告当做错误,避免因为警告而中断编译

    --with-boot-jdk: 指定Boot JDK的位置

  3. 编译OpenJDK

    make all

    但是遇到了两个问题,Google搜索后修改之后完成编译

    1. error: ordered comparison between pointer and zero ('char *' and 'int') 
        if (base() > 0) { 
            ~~~~~~ ^ ~ 
      1 error generated. 
      
    2. error: ordered comparison between pointer and zero ('address' (aka 'unsigned char *') and 'int') 
        if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops.
      

      两个是同等类型的错误,需要找到该文件,将表达式进行修改。
      if (base() > 0) { ==> if (base() != NULL) {
      if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops. ==> if (Universe::narrow_oop_base() != NULL) { // Implies UseCompressedOops.

      修改完成之后重新编译即可,该问题在使用Command Line Tools (macOS Sierra version 10.12) for XCode: Version 9.2的时候出现。参考资料:Xcode 9.0 (9A235) problems

  4. 打印编译后Java的版本

    build/macosx-x86_64-normal-server-release/jdk/bin/java -version
    
    openjdk version "9-internal"
    OpenJDK Runtime Environment (build 9-internal+0-adhoc.xiaoweiliu.jdk9)
    OpenJDK 64-Bit Server VM (build 9-internal+0-adhoc.xiaoweiliu.jdk9, mixed mode)
    ```   ​
posted @ 2018-01-04 21:06 weixliu 阅读(995) 评论(0) 推荐(0)
摘要: 一个语言要想一直有活力,它也需要跟随着时代的变化去进步,Java作为一个古老的语言,它其实有太多的历史包袱,在改变的过程中需要考虑很多,但是它也在慢慢的演变,巩固自己的城墙,不让自己被遗忘在历史中(不少的编程语言已经随着时间的推移,消失在人们的视线中)。当然,作为一个拿Java语言当成主语言的程序员 阅读全文
posted @ 2018-01-01 13:28 weixliu 阅读(617) 评论(0) 推荐(0)
摘要: 自己报名了软考中的高级考试,系统架构设计师。知道软考这个考试因为在本科上学的时候,那时候学校有保研的名额,学院是根据综合成绩的排名决定是否有资格,其中通过了软考中级有相应的加分,通过了软考高级有更高的加分。当时参加了软考,但是在确定排名之前仅有两次软考的机会,本来计划先通过中级,然后在挑战高级,但是 阅读全文
posted @ 2017-10-24 20:36 weixliu 阅读(5815) 评论(1) 推荐(2)
摘要: 如果不了解JDK中proxy动态代理机制的可以先查看上篇文章的内容:Java动态代理学习【Spring AOP基础之一】 由于Java动态代理Proxy.newProxyInstance()的时候会发现其参数类型是ClassLoader classLoader, Class<?>[] interfa 阅读全文
posted @ 2017-08-16 00:06 weixliu 阅读(723) 评论(5) 推荐(0)
摘要: Spring AOP使用的其中一个底层技术就是Java的动态代理技术。Java的动态代理技术主要围绕两个类进行的 首先从代码层面说明Java动态代理是如何实现的, 业务逻辑接口: 创建一个实现该业务接口的类: 此时,如果正常情况如果想要调用Person这个接口,直接new它的实现类然后调用eat方法 阅读全文
posted @ 2017-08-13 13:39 weixliu 阅读(472) 评论(2) 推荐(0)
摘要: 很长一段时间关注在Java Web开发的方向上,提及到Jave Web开发就绕不开Spring全家桶系列,使用面向百度,谷歌的编程方法能够完成大部分的工作。但是这种不系统的了解总觉得自己的知识有所欠缺。所以有了系统了解Spring的想法,了解了Spring,才能够更好的学习Spring全家桶系列,S 阅读全文
posted @ 2017-08-10 23:43 weixliu 阅读(737) 评论(0) 推荐(0)
摘要: 分治算法 算法设计中一种常用的优化方法就是分治的思想,它的解决思路就是将原始的问题划分为性质一样,但是规模减小的子问题,然后通过子问题的解和合并子问题的解得到最终的解,就是分治的思想; 比较常见的分治有 归并排序算法,快速排序算法,两种都是优化的排序算法; 归并排序 归并排序算法通过将问题划分为左半 阅读全文
posted @ 2017-05-29 21:10 weixliu 阅读(648) 评论(0) 推荐(0)
摘要: 今天帮同事调一个问题,明明可以main函数执行的,他非要固执的使用tomcat执行,依他。但是发布到tomcat之后我想去看看发布后的目录,所以就打开了tomcat中的webapps目录,可是并没有发布的程序呀?程序哪里去了。不得其解。 经过一顿折腾,我找到了一个奇怪的路径,其中包含wtpwebap 阅读全文
posted @ 2017-04-20 17:05 weixliu 阅读(353) 评论(0) 推荐(0)
摘要: spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢? 1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的<packagi 阅读全文
posted @ 2017-02-23 10:41 weixliu 阅读(42447) 评论(12) 推荐(1)
摘要: 这几天草草的浏览了一下电子版的《lua程序设计》,没有懂的地方就自动忽略了,挑拣了一些可以理解的部分一直在推进。推进至后面的时候已经浑浑噩噩的了,有种想看完这本书的强迫症的感觉。推进CAPI部分的时候发现难度一下子提升了,有种难以理解的感觉,而且这本书没有相对应的练习,只是看书没有进行相应的实践... 阅读全文
posted @ 2015-01-18 15:53 weixliu 阅读(15489) 评论(0) 推荐(3)
点击右上角即可分享
微信分享提示