idea中编译DataSphereStudio编译方法及问题排查
idea中编译DataSphereStudio编译方法及问题排查
最近工作需要用到DataSphereStudio
,一个国产的数据应用开发门户。在编译过程中遇到了几个问题,现整理了一下方法,如下:
1. 下载代码
代码是从git上下载的,下载地址是: DataSphereStudio Git下载地址
2. idea加载
我的开发工具是idea,本身DataSphereStudio
是一个maven项目,经常用,所以用idea打开的。
3. 编译经过
3.1 scala环境
在编译的过程中,发现了报错,原来DataSphereStudio
有一部分代码是用scala
语言写的,因此需要安装scala
安装包及配置环境变量。
下载scala
比较简单,直接到官网上下一个msi
的windows系统用
的安装包,直接运行安装即可。
注意这里有个坑,默认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
窗口。如下图位置,注意我编译没有在idea
l里执行,建议还是别了,因为编译的时候内存不足,我把能关掉的都关掉了。
按照官网要求,在最外层位置,即上图,先运行下边的命令:
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编译方法及问题排查相关推荐
- Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法
Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...
- oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法
oracle中"ORA-00060: 等待资源时检测到死锁" 或存储过程编译卡死 解决方法 参考文章: (1)oracle中"ORA-00060: 等待资源时检测到死锁& ...
- C语言编译php环境,vscode中C语言编译环境的配置方法(分享)
本篇文章给大家介绍一下vscode配置C语言编译环境的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. vscode c语言的环境配置 完整教程请查看该教程:https://bl ...
- 用c语言编译对数函数,在C语言中使用对数函数的方法
在C语言中使用对数函数的方法 C语言log()函数:返回以e为底的对数值头文件: #include log() 函数返回以 e 为底的对数值,其原型为: double log (double x); ...
- matlab visa转c,将一个m文件转成c /cpp文件并在VC中进行编译。这种方法有个烦人的地方,每次你都需要把matla...
将一个m文件转成c /cpp文件并在VC中进行编译.这种方法有个烦人的地方,每次你都需要把matla 2016-08-23 1 0 0 暂无评分 其他 1 积分下载 如何获取积分? 将一个m文件转成c ...
- Maven在pom文件中添加资源插件后,src/main/resource目录中的文件编译后不拷贝解决方法。
在pom文件中添加以下资源插件后 <!--添加的资源插件--> <build><resources><resource><directory> ...
- 中达优控宏编译失败处理方法
日常开发一些触摸屏开发项目时,难免会需要使用宏功能,扩充原触摸屏达不到功能.或定制功能.本主使用这款触摸屏有段时间,也遇到不少的问题.下面跟大家分享一下宏编译失败处理方法.如下图所示, 宏编译时没反应 ...
- Linux系统中创建C语言程序文件并编译执行的方法
使用vim编辑器创建并编辑C语言源程序文件 执行命令"vim button_led.c"打开Button_Led目录下button_led.c源程序文件并进行编 ...
- 在keil工程中删除编译文件的方法
在实际工作中coding的工作是一方面,但是作为最终的输出是要提交源码作为成果来管理和上传的,不管是Git也好SVN也好,一般都要求只保存源码和工程文件(针对单片机MCU类的项目,对于Linux下的项 ...
- java 静态 编译_Java中的动态和静态编译实例详解
Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...
最新文章
- 霸榜COCO和Cityscapes!南理工CMU提出极化自注意力,更精细的双重注意力建模结构
- python中for语句涉及的序列可以是关系表达式吗_为什么我可以在Python for循环中为迭代器和序列使用相同的名称?...
- python条件表达式有哪几个_Python中条件表达式的评估顺序是什么?
- Linux三剑客正则表达式常用字符汇总
- 文件带 BOM 的看法
- 【工具】动软代码生成器连接数据库
- FFmpeg 和 MP4Box 几个命令
- Ubuntu18.04双系统卸载
- 去掉svn的蓝色问号
- python人脸识别实验报告总结_人脸识别实验报告.doc
- iphone横竖屏切换,旋转屏幕
- 教您如何批量采集1688商城多个商品主图和详情页并统一保存
- shell中test命令方法详解
- (灵魂拷问)MySQL数据库高频面试题,助你脱颖而出
- 有激励果效的座右铭大全
- 新AlphaGo首度揭秘:单机运行,4个TPU,算法更强
- 办公室绿植租赁布置方案
- Linux C哲学家吃饭问题
- 8个免费下载文献的学术网站(亲测可用)
- 408复习笔记——计算机组成原理(三):存储系统
热门文章
- 尚德机构COO杜铮:在线教育进入下半场 释放供给侧红利成关键
- 生活随记 - 拥抱变化
- 补锅之校内测(桶哥系列)
- 【PHP基础学习】—PHP异步非阻塞的实现方法
- DirectShow安装
- php 模态框效果,超酷的模态框效果 - Nifty
- PositiveUnlabeled Data Learning——第四弹(Semi-Supervised Classification/AUC Optimization)
- Autovue Client/Server 性能优化
- 使用spilt截取文件名后缀时出现的问题
- [Error]The app delegate must implement the window property if it wants to use a main storyboard file