天天看點

Mac M1中Idea編譯hadoop2.6.0流程1. 背景2. 下載下傳JDK7并配置3. 安裝protoc 2.5.04. hadoop pom增加依賴4. 效果

1. 背景

更換Mac M1後,發現無法編譯Hadoop2.6.0了,本文總結了Mac基于Idea編譯Hadoop2.6.0的難點及解決辦法。

2. 下載下傳JDK7并配置

https://www.oracle.com/in/java/technologies/javase/javase7-archive-downloads.html

Mac M1中Idea編譯hadoop2.6.0流程1. 背景2. 下載下傳JDK7并配置3. 安裝protoc 2.5.04. hadoop pom增加依賴4. 效果

為了防止出現

Exception in thread “main” java.lang.AssertionError: Missing tools.jar at: /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/Classes/classes.jar. Expression: file.exists()

報錯,在安裝後,增加一個軟連結:

mkdir /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/Classes
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/Classes/classes.jar
           

3. 安裝protoc 2.5.0

下載下傳:

https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0

Mac M1中Idea編譯hadoop2.6.0流程1. 背景2. 下載下傳JDK7并配置3. 安裝protoc 2.5.04. hadoop pom增加依賴4. 效果

解壓後,在

src/google/protobuf/stubs/platform_macros.h

檔案中,增加arm晶片相關配置:

找到以下代碼:

#else
#error Host architecture was not detected as supported by protobuf
           

在上面增加:

#elif defined(__arm64__)
#define GOOGLE_PROTOBUF_ARCH_ARM 1
#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
           

效果如下所示:

Mac M1中Idea編譯hadoop2.6.0流程1. 背景2. 下載下傳JDK7并配置3. 安裝protoc 2.5.04. hadoop pom增加依賴4. 效果

在編譯安裝前,如果已經安裝protoc3,修改protoc指令名,以免被覆寫:

mv /usr/local/bin/protoc /usr/local/bin/protoc3
           

安裝protoc2.5.0:

./configure
make
make check
make install
           

安裝後,檢查版本:

protoc --version
           

4. hadoop pom增加依賴

<dependency>
        <groupId>jdk.tools</groupId>
        <artifactId>jdk.tools</artifactId>
        <version>1.7</version>
        <scope>system</scope>
        <systemPath>/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home/lib/tools.jar</systemPath>
      </dependency>
           

4. 效果

繼續閱讀