因为thingsboard都是国外的资料,国内基本没有参考资料。所以,记录下来源码安装当中,遇到的问题。

thingsboard官网源码安装连接:

 
我的安装环境:win7,已有软件:node,eclipse,maven
 
问题一
根据官方的安装步骤,执行到
mvn clean install -DskipTests 
这一步的时候,报一下错误:
 
Failed to run task: 'npm install' failed. java.io.IOException: Cannot run program "E:\git\thingsboard\ui\target\node\node.exe" (indirectory "E:\git\thingsboard\ui"): CreateProcess error=193, %1 不是有效的 Win32 应用程序。 -> [Help 1]
 
原因:
在UI在的pom.xml文件中,默认指定了安装node的版本号。如果之前没有安装过node的话,应该不会报这个错误的。因为我之前安装过的,所以需要修改pom.xml
里面的node版本号:

<nodeVersion>v6.9.1</nodeVersion>
<npmVersion>3.10.8</npmVersion>

需要改成对应本地的版本号。

如果还是报错,将已经安装的D:\Program Files\nodejs\node.exe(node的安装路径)复制到maven对应的目录下D:\m2\com\github\eirslett\node\10.1.0(maven下的node目录,版本号自行对应)

问题二

根据官方的安装步骤,执行到
mvn clean install -DskipTests 
这一步的时候,报一下错误:

[ERROR] npm ERR! code ENOGIT

[ERROR] npm ERR! No git binary found in $PATH
[ERROR] npm ERR!
[ERROR] npm ERR! Failed using git.
[ERROR] npm ERR! Please check if you have git installed and in your PATH.
[ERROR]
[ERROR] npm ERR! A complete log of this run can be found in:

[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.0:npm
(npm install) on project ui: Failed to run task: 'npm install' failed. (error c
ode 1) -> [Help 1]

原因:

没有安装git或者是没有配置git的环境变量

问题三

[ERROR] Failed to execute goal com.mycila:license-maven-plugin:3.0:check (default) on project xxx: Some files do not have the expected license header -> [Help 1]

原因:

因为maven会对license进行检车check,而配置文件缺少头部license声明,所以报错,无法执行下去。

mvn clean install -DskipTests license:format
增加  license:format 参数
 
如果还是报错,则需要屏蔽根目录下的pom.xml文件代码段:

<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
</plugin>

 
打包成功效果图:
 
问题四
build完成后,导入到eclipse。报错找不到相关的类或者方法,譬如:
The import org.thingsboard.server.extensions.core.plugin.telemetry.gen cannot be resolved
AttributeUpdateProto cannot be resolved to a type
 
原因:

修改根目录下的pom.xml的内容:

<configuration>
<sources>
<!-- <source>${basedir}/target/generated-sources</source> -->
<source>${basedir}/target/generated-sources/grpc-java</source>
<source>${basedir}/target/generated-sources/java</source>
</sources>
</configuration>

 
protobuf相关的代码文件没有生成。
使用protobuf生成对应的文档。只需要用protobuf.exe在eclipse之外生成对应的java文件“org.thingsboard.server.extensions.core.plugin.telemetry.gen”即可
在extensions-core的target/generated-sources中,也能找到生成的文件,直接拷贝到src对应的目录亦可。 同时,需要把application项目和extensions-core项目中的路径target/generated-sources删除
 
protobuf插件安装教程:
https://blog.csdn.net/iphone4grf/article/details/50902816
 
protobuf对应的grpc工具下载地址:
https://blog.csdn.net/y515789/article/details/54378325
 
 
问题五
中文大概意思:导入到eclipse中,就一堆报错信息

I got successful maven build.

However, this is lots of code errors in the code base. The errors are categories to four types.

  1. Eclipse complains log object does not define.
    e.g. log.info("[{}:{}] MQTT broker connection established!", configuration.getHost(), configuration.getPort());

  2. Eclipse complains final variables not initialized. "The blank final field nodeId may not have been initialized"

  3. Object function setter & getter function undefines. I saw properties but there is not explicitly setter and getter for those properties.

4 Object not constructor. I saw some objects only has properties (some of them define as final), However, this is not constructors for those objects.

原因:

安装lombok插件

方案:https://github.com/thingsboard/thingsboard-gateway/issues/36

Lombok plugin for Eclipse

安装lombok方法:https://blog.csdn.net/dorothy1224/article/details/79280591/

问题六

src.main都作为了路径,无法形成maven项目

方法:

屏蔽pom.xml文件中的protobuf插件。涉及到的项目有application,extensions-core。屏蔽后,需要在maven选项中update project

问题七

extension-sns,extension-sqs报错:

The type org.apache.velocity.Template cannot be resolved

方法:

在这两个项目中添加依赖

<dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity</artifactId>
</dependency>

问题八

application报错:

ClusterAPIProtos cannot be resolved ClusterGrpcService.java

方法:

将application\target\generated-sources\protobuf\grpc-java\org\thingsboard\server\gen,

application\target\generated-sources\protobuf\java\org\thingsboard\server\gen,

extensions-core\target\generated-sources\protobuf\java\org\thingsboard\server\plugin\telmetry\gen生成的

代码(包括目录)复制到src中

问题九

忘记是什么问题了,但是需要在maven的setting.xml文件中加配置信息:

<activeProfiles>
  <activeProfile>env-thing</activeProfile>
</activeProfiles>

thingsboard填坑之路的更多相关文章

  1. Android Studio 3.0正式版填坑之路

    原文:https://www.jianshu.com/p/9b25087a5d7d   Android Studio 3.0启动图 序言 总看别人的文章,今天尝试着自己来写一篇.在逛论坛时候,无意间发 ...

  2. 微信公众号支付备忘及填坑之路-java

    一.背景 最近公司给第三方开发了一个公众号,其中最重要的功能是支付,由于是第一次开发,遇到的坑特别的多,截止我写博客时,支付已经完成,在这里我把遇到的坑记录一下(不涉及退款).不得不吐槽一下,腾讯这么 ...

  3. 基于环信SDK的IM即时通讯填坑之路(vue)

    公司最近使用第三方环信SDK的进行通信聊天,基本已完成.记录下填坑之路 1.可以通过以下方式引用 WebSDK 1.安装 npm install easemob-websdk --save 2. 先 ...

  4. Mybatis-Plus的填坑之路 - Lynwood/wunian7yulian

    目录 Mybatis-Plus 我来填坑~ 目录 一.简单介绍 官方说明 : 成绩: 最新版本: 开发层面MyBatis-Plus特色 Mybatis-Plus中的Plus 二.MP的特性 三.MP框 ...

  5. mint-ui 填坑之路

    swipe组件 因为项目加载eslint的缘故也就没有像之前的项目一样引用swiper框架.这个轮播图的组件文档实在是不敢恭维(尽管其他的文档也好不到哪里去),官方给出的参数真是少的可怜,一些方法也并 ...

  6. 微信小程序填坑之路其一:wx.request发送与服务端接受

    一.序言 应公司要求要求,要用小程序开发一个信息录入系统.没办法只能听话来填坑. 先介绍一下环境:客户端——小程序:服务端——java:数据库——mysql:服务器——centos7 需求:客户端输入 ...

  7. H5嵌入原生开发小结----兼容安卓与ios的填坑之路

    一开始听说开发H5,以为就是做适配现代浏览器的移动网页,心想不用管IE了,欧也.到今天,发现当初too young too simple,兼容IE和兼容安卓与IOS,后者让你更抓狂.接下来数一下踩过的 ...

  8. Elasticsearch-2.3.x填坑之路

    使用版本说明:2.3.2 强制不能使用root用户启动?因为在2.x版本强调了安全性,防止attracker侵入root用户,所以建议使用者创建其他用户启动.当然,可以通过配置来实现root用户启动. ...

  9. Genymotion填坑之路

    Genymotion是一款android的模拟器,之前用的一台电脑直接装上就可以用,后来换了一台机器,一直报获取不到IP,后来网上各种找方法,偶然发现网上说的是硬件问题: 在BIOS中将CPU的vir ...

随机推荐

  1. java标志性接口

    标识接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情.使用标记接口的唯一目的是使得可以用instanceof进行类型查询,例如:if(obj inst ...

  2. Spring(转载一)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  3. vb.net

    vb.net 教程: https://www.yiibai.com/vb.net/vb.net_overview.html vb.net 教程 https://www.w3cschool.cn/vb_ ...

  4. AX3298添加新sensor

    这是编译的工程目录. 1,先把sensor对应的驱动比如GC1034.c添加到工程.然后编译成库.会在res目录下生产sensor.bin文件 流程:编译后在debug目录生成 elf 文件AX329 ...

  5. 二维数组 \n是换行 三目运算符 if语句示例

    今天学习了二维数组 // 1.定义数组array并赋值 // var arr1=[1,2,3,4,5,]; // alert(arr1[2]); 数组的长度就是值的多少 获取数值的长高度=最大下标+1 ...

  6. siimpleHttpServer 快速建立一个文件服务器

    利用 SimpleHTTPServer 可以非常快速的建立一个http服务器,如果有同学在做共享文件时遇到了困难,只需要一行代码,即可建站完成. 在想要映射的文件夹目录内,执行命令行 python - ...

  7. linux中一些常用的目录简要说明

    1.目录结构 /bin:binary的缩写,一些常用的命令如:ls.qwd.cp.cd等命令保存在这个文件内. /boot:启动linux时需要使用到的一些核心文件,以及一些镜像等,删除后系统将无法开 ...

  8. BigData_Jia

    #include <stdio.h> #include <string.h> #define MaxSize 10000 int n1, n2, i, k, times; ch ...

  9. 温度转换 II

    描述 温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit). 请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度. 转换算法如下:(C表示摄氏度.F表示 ...

  10. skimage

    它是由python语言编写的,   子模块名称 主要实现功能 io 读取.保存和显示图片或视频 data 提供一些测试图片和样本数据 color 颜色空间变换 filters 图像增强.边缘检测.排序 ...