idea中编译DataSphereStudio编译方法及问题排查

   最近工作需要用到DataSphereStudio,一个国产的数据应用开发门户。在编译过程中遇到了几个问题,现整理了一下方法,如下:

1. 下载代码

  代码是从git上下载的,下载地址是: DataSphereStudio Git下载地址

2. idea加载

  我的开发工具是idea,本身DataSphereStudio是一个maven项目,经常用,所以用idea打开的。

3. 编译经过

3.1 scala环境

  在编译的过程中,发现了报错,原来DataSphereStudio有一部分代码是用scala语言写的,因此需要安装scala安装包及配置环境变量。
  下载scala比较简单,直接到官网上下一个msiwindows系统用的安装包,直接运行安装即可。
  注意这里有个坑,默认scala会提示安装到C:\Program Files (x86)文件夹下,一定要改成别的路径,我是改到了C:\Program Files\scala路径下。如下:

   配置环境变量就不说了,比较简单,主要再提示一下,安装scala环境变量之前,一定要先安装jdk环境。因为弱弱的scala眼光贼好,用到了天下第一的java类库

3.2 修改pom.xml中的应用版本号

   当配置好scala环境时,就可以到主目录下的pom.xml里,这里其实参照的官网的步骤来的,官方编译方法参考地址
  按照官方的编译方法来看,我找到了位置,如下图:

   上图是我按照我的实际环境填的,因为我是参照官网做的,所以我的环境也是尽量与官网一致,可以根据实际环境修改。

 <properties><dss.version>0.7.0</dss.version><linkis.version>0.9.1</linkis.version><scala.version>2.11.8</scala.version><jdk.compile.version>1.8</jdk.compile.version><maven.version>3.3.3</maven.version></properties>

  此处注意一个坑,即<scala.version>2.11.8</scala.version> ,如果你下载的源码跟我的这里是一样的,你本地安装的scala环境变量首先最好是高于2.11.8版本。但是并不代表你这里可以直接改成你安装的版本,亲测会打包失败的~~~。
  比如我安装的scala版本是2.13.1,但是我这里直接替换成这个版本编译直接报错。报错内容如下:

[WARNING]  Expected all dependencies to require Scala version: 2.13.1
[WARNING]  com.webank.wedatasphere.linkis:linkis-common:0.9.1 requires scala ver
sion: 2.11.8
[WARNING] Multiple versions of scala libraries detected!
[WARNING] Zinc server is not available at port 3030 - reverting to normal increm
ental compile
[INFO] Using incremental compilation
[INFO] Compiling 1 Scala source and 30 Java sources to E:\znworkspace\datasphere
\DataSphereStudio\dss-common\target\classes...
[INFO]
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ dss-common ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 30 source files to E:\znworkspace\datasphere\DataSphereStudio\d
ss-common\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ds
s-common ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
. build is platform dependent!

  虽然错误很多,但是细心看一下,就会发现有这么一句:

Expected all dependencies to require Scala version: 2.13.1
[WARNING]  com.webank.wedatasphere.linkis:linkis-common:0.9.1 requires scala ver
sion: 2.11.8

  编译期望是用2.13.1,但是实际上它里边的某些包是需要2.11.8 ,所以这里不能改,改了反而报错。

3.3 idea配置scala
3.3.1 安装scala插件

  当然要想让idea支持scala,还需要安装插件,idea安装插件,只需要File--->Settings---->Plugins中搜索scala即可,注意要下载带language说明的插件。

3.3.2 配置scala sdk

  下载完之后重启idea,然后随便找一个scala后缀的文件,idea就会提示去配置scala环境。只需要按照提示去找到你本地的scala目录,加载进去即可。这里我当时没有截图,所以我也不知道怎么让它出来,其实跟jdk是一样的。

3.3.3 修改scala compiler

  据我搜到的资料,大家都说如果一个项目既有java,又有scala,那在编译的时候,要先编译scala,再编译java。这个在idea里有配置。
  需要到File--->Settings---->Build,Execution,Deployment--->Compiler--->scala compiler 中,找到compiler order,在右上方,将其修改为Scala Then Java即可。
  请注意,在改完之后,一定要编译一下项目。如下图:

3.4 编译

   在主目录下,即下图,打开cmd窗口。如下图位置,注意我编译没有在ideal里执行,建议还是别了,因为编译的时候内存不足,我把能关掉的都关掉了。

   按照官网要求,在最外层位置,即上图,先运行下边的命令:

mvn -N  install

   异常顺利,直接成功。继续按照文档运行:

mvn clean install
3.4.1 错误一 scala版本不能改

   这里就不说了,上边提过。<scala.version>2.11.8</scala.version>不要改它。

3.4.2 错误二 编译gbk的不可映射字符

  这个会在编译的过程中,出来一堆这样的提示,如果你是在idea执行的mvn clean install 可能汉字是乱码。这里是因为scala插件没指定编码,可以找到最高层的pom.xml,还是上图里的。

<plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>3.2.0</version><executions><execution><id>eclipse-add-source</id><goals><goal>add-source</goal></goals></execution><execution><id>scala-compile-first</id><phase>process-resources</phase><goals><goal>compile</goal></goals></execution><execution><id>scala-test-compile-first</id><phase>process-test-resources</phase><goals><goal>testCompile</goal></goals></execution><execution><id>attach-scaladocs</id><phase>verify</phase><goals><goal>doc-jar</goal></goals></execution></executions><configuration><scalaVersion>${scala.version}</scalaVersion><recompileMode>incremental</recompileMode><useZincServer>false</useZincServer><!--这里加字符集编码--><encoding>utf-8</encoding></configuration>
</plugin>

  当然,我连maven的另一个插件,下边也加了字符集编码的配置。

 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.5.1</version><configuration><source>${jdk.compile.version}</source><target>${jdk.compile.version}</target><encoding>utf-8</encoding></configuration></plugin>
3.4.3 错误三 Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2: scala-compile-first XXX…

  此问题,可以参照3.3.3 解决,我记得是改了它之后,就没问题了。

3.4.4 错误四 Java HotSpot™ 64-Bit Server VM warning: Insufficient space for shared memory file

   这个问题已经是最后发生的问题了,当然就是内存不足的问题,这里,就是为什么上边我在执行编译命令的时候,没有用IDEA,为了减少内存的利用,我直接把所有的无关的程序都关掉了,包括浏览器,然后安心打包,就行了。

3.5 编译成功

   以上就是我遇到的问题。
   终于也是见到了编译成功的字样。虽然现在我还不知道编译成功后要干啥,还要接着搜文档学习后边的。

idea中编译DataSphereStudio编译方法及问题排查相关推荐

  1. Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法

    Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...

  2. oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法

    oracle中"ORA-00060: 等待资源时检测到死锁" 或存储过程编译卡死 解决方法 参考文章: (1)oracle中"ORA-00060: 等待资源时检测到死锁& ...

  3. C语言编译php环境,vscode中C语言编译环境的配置方法(分享)

    本篇文章给大家介绍一下vscode配置C语言编译环境的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. vscode c语言的环境配置 完整教程请查看该教程:https://bl ...

  4. 用c语言编译对数函数,在C语言中使用对数函数的方法

    在C语言中使用对数函数的方法 C语言log()函数:返回以e为底的对数值头文件: #include log() 函数返回以 e 为底的对数值,其原型为: double log (double x); ...

  5. matlab visa转c,将一个m文件转成c /cpp文件并在VC中进行编译。这种方法有个烦人的地方,每次你都需要把matla...

    将一个m文件转成c /cpp文件并在VC中进行编译.这种方法有个烦人的地方,每次你都需要把matla 2016-08-23 1 0 0 暂无评分 其他 1 积分下载 如何获取积分? 将一个m文件转成c ...

  6. Maven在pom文件中添加资源插件后,src/main/resource目录中的文件编译后不拷贝解决方法。

    在pom文件中添加以下资源插件后 <!--添加的资源插件--> <build><resources><resource><directory> ...

  7. 中达优控宏编译失败处理方法

    日常开发一些触摸屏开发项目时,难免会需要使用宏功能,扩充原触摸屏达不到功能.或定制功能.本主使用这款触摸屏有段时间,也遇到不少的问题.下面跟大家分享一下宏编译失败处理方法.如下图所示, 宏编译时没反应 ...

  8. Linux系统中创建C语言程序文件并编译执行的方法

    使用vim编辑器创建并编辑C语言源程序文件           执行命令"vim button_led.c"打开Button_Led目录下button_led.c源程序文件并进行编 ...

  9. 在keil工程中删除编译文件的方法

    在实际工作中coding的工作是一方面,但是作为最终的输出是要提交源码作为成果来管理和上传的,不管是Git也好SVN也好,一般都要求只保存源码和工程文件(针对单片机MCU类的项目,对于Linux下的项 ...

  10. java 静态 编译_Java中的动态和静态编译实例详解

    Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...

最新文章

  1. 霸榜COCO和Cityscapes!南理工CMU提出极化自注意力,更精细的双重注意力建模结构
  2. python中for语句涉及的序列可以是关系表达式吗_为什么我可以在Python for循环中为迭代器和序列使用相同的名称?...
  3. python条件表达式有哪几个_Python中条件表达式的评估顺序是什么?
  4. Linux三剑客正则表达式常用字符汇总
  5. 文件带 BOM 的看法
  6. 【工具】动软代码生成器连接数据库
  7. FFmpeg 和 MP4Box 几个命令
  8. Ubuntu18.04双系统卸载
  9. 去掉svn的蓝色问号
  10. python人脸识别实验报告总结_人脸识别实验报告.doc
  11. iphone横竖屏切换,旋转屏幕
  12. 教您如何批量采集1688商城多个商品主图和详情页并统一保存
  13. shell中test命令方法详解
  14. (灵魂拷问)MySQL数据库高频面试题,助你脱颖而出
  15. 有激励果效的座右铭大全
  16. 新AlphaGo首度揭秘:单机运行,4个TPU,算法更强
  17. 办公室绿植租赁布置方案
  18. Linux C哲学家吃饭问题
  19. 8个免费下载文献的学术网站(亲测可用)
  20. 408复习笔记——计算机组成原理(三):存储系统

热门文章

  1. 尚德机构COO杜铮:在线教育进入下半场 释放供给侧红利成关键
  2. 生活随记 - 拥抱变化
  3. 补锅之校内测(桶哥系列)
  4. 【PHP基础学习】—PHP异步非阻塞的实现方法
  5. DirectShow安装
  6. php 模态框效果,超酷的模态框效果 - Nifty
  7. PositiveUnlabeled Data Learning——第四弹(Semi-Supervised Classification/AUC Optimization)
  8. Autovue Client/Server 性能优化
  9. 使用spilt截取文件名后缀时出现的问题
  10. [Error]The app delegate must implement the window property if it wants to use a main storyboard file