1.安装数据库(略)
2.配置数据库,修改resource下边的thingsboard.yml 文件配置相应的数据库名和用户名和密码:
以下我在服务器www.vincentisme.com 5432 端口开启了postgre数据库,并创建了一个叫windows的数据库,用户名和密码如下。
然后运行:
如果Intellij IDEA运行报Command line is too long
修改项目下 .idea\workspace.xml,找到标签
运行完之后提示找不到application/src/main/data/sql/下找不到相应的sql文件
我们将 dao/src/main/resources/sql 下边的sql文件全部复制到 application/src/main/data/sql/ 结果如下。
再次运行 src/main/java/org/thingsboard/server/ThingsboardInstallApplication.java
以上说明数据库表生成成功,我们可以检查
可以看到windows数据库下边自动生成了数据表。
此时就可以运行src/main/java/org/thingsboard/server/ThingsboardServerApplication.java ,遇到了下边的问题
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2021-06-14 21:00:22,720 [main] ERROR o.s.boot.SpringApplication - Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'adminController': Unsatisfied dependency expressed through field 'lwM2MModelsRepository'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'lwM2MModelsRepository': Unsatisfied dependency expressed through field 'contextServer'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lwM2MTransportConfigServer': Invocation of init method failed; nested exception is java.nio.file.InvalidPathException: Illegal char <:> at index 2: /C:/Users/Administrator/IdeaProjects/vincent-iot/thingsboard/\data\credentials\serverKeyStore.jksat org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)at org.thingsboard.server.ThingsboardServerApplication.main(ThingsboardServerApplication.java:38)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'lwM2MModelsRepository': Unsatisfied dependency expressed through field 'contextServer'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lwM2MTransportConfigServer': Invocation of init method failed; nested exception is java.nio.file.InvalidPathException: Illegal char <:> at index 2: /C:/Users/Administrator/IdeaProjects/vincent-iot/thingsboard/\data\credentials\serverKeyStore.jksat org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)... 20 common frames omittedCaused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lwM2MTransportConfigServer': Invocation of init method failed; nested exception is java.nio.file.InvalidPathException: Illegal char <:> at index 2: /C:/Users/Administrator/IdeaProjects/vincent-iot/thingsboard/\data\credentials\serverKeyStore.jksat org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:415)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)... 33 common frames omittedCaused by: java.nio.file.InvalidPathException: Illegal char <:> at index 2: /C:/Users/Administrator/IdeaProjects/vincent-iot/thingsboard/\data\credentials\serverKeyStore.jksat java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:229)at java.base/java.nio.file.Path.of(Path.java:147)at java.base/java.nio.file.Paths.get(Paths.java:69)at org.thingsboard.server.common.transport.lwm2m.LwM2MTransportConfigServer.getInKeyStore(LwM2MTransportConfigServer.java:183)at org.thingsboard.server.common.transport.lwm2m.LwM2MTransportConfigServer.init(LwM2MTransportConfigServer.java:172)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:566)at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)... 45 common frames omitted
解决方案,修改627行thingsboard.yml如下:__ _key_store_path_file: “${KEY_STORE_PATH_FILE:/common/transport/lwm2m/src/main/resources/credentials/serverKeyStore.jks}”
再次运行。成功。
