ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

编译DataX

2021-07-12 20:31:26  阅读:459  来源: 互联网

标签:java Record alibaba 编译 datax com DataX


下载 DataX

首先,访问 DataX 官网地址 https://github.com/alibaba/DataX/ 进行下载
在这里插入图片描述

编译 DataX

下载后解压 DataX,在确保已经安装了maven之后,进入DataX目录,执行 mvn -U clean package assembly:assembly -Dmaven.test.skip=true 命令进行编译。

java14以上的编译问题

如果 java 版本是14以下,那么不会有问题。如果 java 版本跟我一样是 15,则会报如下错误
在这里插入图片描述
由于在 Java15,Oracle新增了一个 java.lang.Record 类,因此如果这么导入 import com.alibaba.datax.common.element.*; 编译器无法判断,到底是引用 com.alibaba.datax.common.element.Record,还是引用 java.lang.Record,因此报错。

使用find . -name *.java | xargs grep -F 'com.alibaba.datax.common.element.*' 来查找有哪些引发混淆的文件。

  • find 命令用来指定文件类型,点号表示当前路径
  • xargs是一个给其他命令传递参数的过滤器
  • grep -F 表示查找文件中是否包含某个字符串,-F表示纯粹的字符串(默认使用正则表达式匹配)
  • grep -l 可以只显示文件路径,不显示匹配到的内容

在这里插入图片描述
有两种方法进行替换

  1. 使用vim逐个替换。例如vim /home/chen/Documents/DataX-master/core/src/main/java/com/alibaba/datax/core/transport/transformer/FilterTransformer.java,然后使用命令 :%s#Record #com.alibaba.datax.common.element.Record #g进行批量替换,为所有 Record 明确其引用的包名。替换完后,再输入 :wq 对修改进行保存并退出。这个方法少量文件还好,要是文件多的话,就十分麻烦了。
  2. 使用sed命令批量处理,将 Record 替换为 com.alibaba.datax.common.element.Record
sed -i 's/Record /com.alibaba.datax.common.element.Record /g' `find . -name *.java | xargs grep -F 'com.alibaba.datax.common.element.*'`

在这里插入图片描述手动处理下下面文件

/home/chen/Documents/DataX-master/odpsreader/src/main/java/com/alibaba/datax/plugin/reader/odpsreader/ReaderProxy.java
/home/chen/Documents/DataX-master/streamreader/src/main/java/com/alibaba/datax/plugin/reader/streamreader/StreamReader.java
/home/chen/Documents/DataX-master/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/MongoDBWriter.java
/home/chen/Documents/DataX-master/hbase11xsqlreader/src/main/java/com/alibaba/datax/plugin/reader/hbase11xsqlreader/HbaseSQLReaderTask.java
/home/chen/Documents/DataX-master/hbase20xsqlreader/src/main/java/com/alibaba/datax/plugin/reader/hbase20xsqlreader/HBase20xSQLReaderTask.java

在vim中:行号可以直接跳转到指定行

某个库找不到的解决办法

如果遇到某个包下载不到,使用浏览器进入 https://public.nexus.pentaho.org/service/rest/repository/browse/omni/ 页面手动下载到 m2 的对应目录即可
在这里插入图片描述
在这里插入图片描述

找不到 oscarJDBC.jar

[ERROR] Failed to execute goal on project oscarwriter: Could not resolve dependencies for project com.alibaba.datax:oscarwriter:jar:0.0.1-SNAPSHOT: Could not find artifact com.oscar:oscar:jar:7.0.8 at specified path /home/chen/Documents/DataX-master/oscarwriter/src/main/lib/oscarJDBC.jar -> [Help 1]

在这里插入图片描述这个是阿里工程师的失误,网上也找不到这个包,因此进入pom.xml,注释该选项即可

<!--
<dependency>
    <groupId>com.oscar</groupId>
    <artifactId>oscar</artifactId>
    <version>7.0.8</version>
    <scope>system</scope>
    <systemPath>${basedir}/src/main/lib/oscarJDBC.jar</systemPath>
</dependency>
-->

编译成功

在这里插入图片描述

标签:java,Record,alibaba,编译,datax,com,DataX
来源: https://blog.csdn.net/chy555chy/article/details/118675428

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有