- 使用git下载源码后, 必须运行
mvn clean install -DskipTests
这一步很重要, 有很多文件需要初始化, 如果直接放入idea可能存在各种问题, 最好是用命令行执行
- 初始化时, 可能报错停止, 这个一般是网络问题, 可以尝试修改maven镜像, 这是我成功构建的镜像
<!--阿里云仓库-->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<!--中央仓库-->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2</url>
</mirror>
- 安装postgresql, 修改配置文件后, 进入application模块下有个ThingsBoardInstallApplication文件去安装时, 报错
可以看到, 安装所需的sql文件不存在, 这就是上面初始化项目的原因, 初始化后, target/data目录下, 可以找到这个sql文件夹, 复制到application/src/data目录下
4.重新执行, 可能会报错【resouce lwm2m object model from file】【Caused by: java.nio.file.NoSuchFileException: lwm2m-registry】
追踪错误, 发现在这个文件下, 有个属性, 后面多了一个【:】
关于这里多了个冒号问题, 在github的Issuse里有人反馈, 点击查看具体原因
去掉后, 依然会报错, 跟踪代码发现这个属性内容是空的, 想找一个安装目录, 但是没找到, 在配置文件里也没有这个配置, 于是, 可以在【thingsboard.yml】里添加配置
install:
data_dir: application/src/main/data
再次执行, 成功安装!
5.启动项目, 可能会报错某些类不存在,
【import org.thingsboard.server.common.msg.gen.MsgProtos】标红这种错误, 甚至右下角会错误提示
具体原因没有深入研究, 大概就是用到了一个叫【Protocol Buffers】的东西, 我们需要在idea里安装一个插件, 叫【protobuf】
不同的idea版本这里的插件可能有区别, 还可能与idea不兼容, 去idea官网下载当前版本idea支持的插件. 另外我这里的三个插件, 有的人可能是需要第一个, 原因未知.
- 启动时也会有个警告
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.nustaq.serialization.FSTClazzInfo (file:/E:/maven/apache-maven-3.8.1/maven-repository/de/ruedigermoeller/fst/2.57/fst-2.57.jar) to field java.lang.String.value
WARNING: Please consider reporting this to the maintainers of org.nustaq.serialization.FSTClazzInfo
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
这个是说在jdk9后取消了关于反射的一些操作, 不管也不会影响运行, 想屏蔽错误需要加一些启动参数, 具体可以在网上查询
7. 开发时, 代码正常运行, 打包时可能报错!
Some files do not have the expected license header
这是因为打包时检查了license头, 有两种方法解决
一. 给我们开发时新添加的文件头部都加入一段注释, 注释内容在根目录有个模板, 或者随便打开一个原来的文件, 从顶部复制粘贴到我们自己的文件中
二.修改pom, 禁止检测, 具体操作可以自行搜索
最后特别说明一下, 其实在target里有安装脚本, 可以直接运行, 分别是linux和windows的脚本. 上面第4个问题如果不修复, 项目是可以运行的, 但是后续是否存在问题未知, 由于windows脚本安装最后是一闪而过, 不知道有没有报错, 所以我没有采取这种方式, 担心未来出问题