文章类型:只记坑,不分析、不学习。
此文主要针对想用源码启动thingsboard的人们。
注意:只是辅助能将项目正常运行起来,以后的坑以后再去研究。
配置:
thingsboard 3.0.1
postgre 12
提醒:改完下面第一个问题后,记得compile,时间会非常长,前端模块可能会报错,然而可以暂时不用管。最好不要直接install。
1、gradle下不了的问题。
原因:连不上外网,需换成国内镜像。
解决方法:
找到build.gradle,注意前后端都有。将buildscript.repositories的jcenter注释,修改成阿里云镜像:maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
图例:

2、gen包找不到的问题。
原因:系编译版本问题。
解决方法:
在common工程的pom.xml文件中加入
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
图例:

3、application的config中的ThingsboardSecurityConfiguration报错问题。
原因:系@Configuration注解的类中,不能使用自动或手动注入的注解!因为在springboot项目的启动的最初阶段,IDE加载注入配置器bean,还没有扫描到工程的bean,无法发现对应的 bean ,于是就需要我们手动的给其指定需要扫描的包
解决方法:指定扫描路径,去扫描一次包!使用@ComponentScan({"org.thingsboard.server"})
图例:

4、运行时有bean找不到
原因:系统里面初始化的时候回去查数据库用户,如果数据库一个用户都没有,部分bean就会找不到!
解决办法:初始化数据库,也就是去找系统里面dao项目下找system-data.sql(记不太清楚了,貌似是这货,如果不是就继续根据英文名找),在数据库中执行一下,把超级管理员用户加载出来。
5、运行时还有bean依旧找不到(慎重)。
原因:同样是ThingsboardSecurityConfiguration类中,部分注入方式可能存在问题!(注意是可能,因为鄙人改了太多给忘了),注意当多个实现类的bean注入时,不能单纯的使用@Autowired
,这玩意儿是根据类型去找到实例,如果多个实现类IOC容器会直接懵逼。所以你需要指定人bean名字,
解决办法:可以通过@Autowired+@Qualifier("beanName")的方式,也可以@Resource(name = "beanName")直接搞定。