编译Jruby生成jruby.jar

logstash老旧版本所依赖的jruby.jar不支持AArch64,如果不支持AArch64,在启动logstash时会报错"Unsupported platform: unknown-linux"。
- 下载代码并解压。
1 2
wget https://github.com/jruby/jruby/archive/1.7.27.tar.gz -O jruby-1.7.27.tar.gz tar -zxvf jruby-1.7.27.tar.gz
- 进入解压后的目录。
1
cd jruby-1.7.27
- 修改源码“core/src/main/java/org/jruby/ext/ffi/Platform.java”。
- 打开源码。
1
vi core/src/main/java/org/jruby/ext/ffi/Platform.java
- 按“i”进入编辑模式,修改以下内容。
- 第87行增加内容AARCH64。
- 第149~150行增加AARCH64分支。
- 第209行增加AARCH64分支。
- 第87行增加内容AARCH64。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开源码。
- 修改pom.xml文件。
- 打开文件。
1
vi pom.xml
- 按“i”进入编辑模式,在第71行,修改jffi的版本,将1.2.12修改成1.2.13(jffi在1.2.13版本支持AArch64)。
1
<jffi.version>1.2.13</jffi.version>
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开文件。
- 修改“core/pom.xml”文件。
- 打开文件。
1
vi core/pom.xml
- 按“i”进入编辑模式,在第101行,修改jnr-ffi的版本,将2.0.9修改成2.1.0。
1 2
<artifactId>jnr-ffi</artifactId> <version>2.1.0</version>
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开文件。
- 执行编译。
1
mvn package
编译成功界面如下图所示:
编译出的jruby.jar位于“lib”目录下。
- 使用鲲鹏应用迁移工具扫描jruby.jar。