docker镜像编译错误
❓ com.spotify.docker.client.shaded.org.apache.http.impl.execchain.RetryExec execute
信息: I/O exception (java.io.FileNotFoundException) caught when processing request to {}->npipe://localhost:80: \\.\pipe\docker_engine (系统找不到指定的文件。)
答案
maven插件在当前电脑上找不到docker服务。需要添加环境变量使用线上的docker服务。
环境变量名:DOCKER_HOST
环境变量值:tcp://docker所在服务器IP:2375
图片服务器(Minio)更换了访问地址
❓ 图片服务器访问地址变了,为了保证图片资源能正常访问需要怎么操作?
答案
图片访问地址是保存在数据库的。需要更新sys_tenant、sys_user、device_profile、tk_configuration_center、tk_device、tk_data_view、sys_enterprice、sys_app_design和sys_platform_design等表的数据。
UPDATE sys_tenant SET icon = REPLACE(icon, '旧地址', '新地址') WHERE icon LIKE '%旧地址%';
UPDATE sys_user SET avatar = REPLACE(avatar, '旧地址', '新地址') WHERE avatar LIKE '%旧地址%';
UPDATE device_profile SET image = REPLACE(image, '旧地址', '新地址') WHERE image LIKE '%旧地址%';
UPDATE tk_configuration_center SET thumbnail = REPLACE(thumbnail, '旧地址', '新地址') WHERE thumbnail LIKE '%旧地址%';
UPDATE tk_device SET device_info = REPLACE(device_info, '旧地址', '新地址') WHERE device_info LIKE '%旧地址%';
UPDATE tk_data_view SET thumbnail = REPLACE(thumbnail, '旧地址', '新地址') WHERE thumbnail LIKE '%旧地址%';
UPDATE sys_enterprise SET qr_code = REPLACE(qr_code, '旧地址', '新地址') WHERE qr_code LIKE '%旧地址%';
UPDATE sys_app_design SET logo = REPLACE(logo, '旧地址', '新地址') WHERE logo LIKE '%旧地址%';
UPDATE sys_app_design SET background = REPLACE(background, '旧地址', '新地址') WHERE background LIKE '%旧地址%';
UPDATE sys_platform_design SET logo = REPLACE(logo, '旧地址', '新地址') WHERE logo LIKE '%旧地址%';
UPDATE sys_platform_design SET icon = REPLACE(icon, '旧地址', '新地址') WHERE icon LIKE '%旧地址%';
UPDATE sys_platform_design SET background = REPLACE(background, '旧地址', '新地址') WHERE background LIKE '%旧地址%';
docker容器启动失败
❓ docker容器启动时,日志输出找不到启动脚本文件。
答案
脚本文件确实不存在或者文件格式不正确。
第一步:修改容器启动脚本进入容器查看脚本是否存在。
version: '3'
services:
thingskit:
#修改启动脚本,进入容器查看脚本文件是否存在
command: tail -f /dev/null
第二步:进入容器查看对应文件是否存在或文件格式是否正确
docker exec -it 容器名 bash
第三步:需要将文件格式改为Linux系统的LF模式。
可以直接映射脚本文件到容器内,并调整宿主机内脚本文件的文件格式。
##1/2:修改文件格式
:set ff=unix #linux
##2/2:保存文件修改内容
:wq
也可以在编译打包之前用开发工具Idea修改脚本文件的文件格式。
js-executor和ui-ngx yarn install失败?
❓ ThingsKit后端使用Maven编译前端组件js-executor和ui-ngx总是yarn install 失败?
答案
Maven使用插件com.github.eirslett:frontend-maven-plugin管理前端的依赖包,依赖包对node的最低版本要求不尽相同,所以我们需要根据依赖包的要求调整node和yarn的配置。具体操作如下:
1.查看maven执行异常的详细信息。
mvn clean install -Dmaven.test.skip=true -e -X
2.结合异常信息调整相关配置。
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<configuration>
<installDirectory>target</installDirectory>
<workingDirectory>${basedir}</workingDirectory>
</configuration>
<executions>
<execution>
<id>install node and yarn</id>
<goals>
<goal>install-node-and-yarn</goal>
</goals>
<configuration>
<nodeVersion>v14.0.0</nodeVersion>
<yarnVersion>v1.22.4</yarnVersion>
</configuration>
</execution>
<execution>
<id>yarn install</id>
<goals>
<goal>yarn</goal>
</goals>
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<execution>
<id>yarn pkg</id>
<goals>
<goal>yarn</goal>
</goals>
<configuration>
<arguments>run pkg</arguments>
</configuration>
</execution>
</executions>
</plugin>
ui-ngx构建失败?yarn run build:prod失败?
答案
删除ui-ngx下的node_modules文件夹,重新进行install
yarn管理的依赖包下载失败、超时?
❓ 使用yarn install命令下载前端依赖包下载失败。提示访问超时?
答案
💡 提示
【当前用户】需要修改为当前登录系统的用户名。
需要将下面提供的压缩文件解压后,放入目录R:\Users\当前用户\AppData\Local\Yarn\Cache\v6中。
js-executor和ui-ngx yarn install弹窗口提示“此应用无法在电脑上运行”?
❓ ThingsKit后端使用Maven编译前端组件js-executor和ui-ngx弹窗提示?
答案
使用Maven插件进行前端依赖安装与系统存在兼容问题。直接使用yarn命令手动安装。
1.执行yarn命令安装前端依赖。
cd msa/js-executor #脚本引擎
cd ui-ngx #TB前端页面
yarn install
2.将pom.xml文件内容注释掉。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.thingsboard</groupId>
<version>3.6.4EDGE</version>
<artifactId>thingsboard</artifactId>
</parent>
<groupId>org.thingsboard</groupId>
<artifactId>ui-ngx</artifactId>
<packaging>jar</packaging>
<name>ThingsBoard Edge UI</name>
<url>https://thingsboard.io</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<main.dir>${basedir}/..</main.dir>
</properties>
<build>
<resources>
<resource>
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<configuration>
<installDirectory>target</installDirectory>
<workingDirectory>${basedir}</workingDirectory>
</configuration>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-yarn</goal>
</goals>
<configuration>
<nodeVersion>v20.11.1</nodeVersion>
<yarnVersion>v1.22.17</yarnVersion>
</configuration>
</execution>
<!-- <execution>-->
<!-- <id>yarn install</id>-->
<!-- <goals>-->
<!-- <goal>yarn</goal>-->
<!-- </goals>-->
<!-- <configuration>-->
<!-- <arguments>install --non-interactive --network-concurrency 4 --network-timeout 100000 --mutex network</arguments>-->
<!-- </configuration>-->
<!-- </execution>-->
</executions>
</plugin>
</plugins>
</build>
<profiles>
<!-- <profile>-->
<!-- <id>yarn-build</id>-->
<!-- <activation>-->
<!-- <activeByDefault>true</activeByDefault>-->
<!-- </activation>-->
<!-- <build>-->
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <groupId>com.github.eirslett</groupId>-->
<!-- <artifactId>frontend-maven-plugin</artifactId>-->
<!-- <configuration>-->
<!-- <installDirectory>target</installDirectory>-->
<!-- <workingDirectory>${basedir}</workingDirectory>-->
<!-- </configuration>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <id>yarn build</id>-->
<!-- <goals>-->
<!-- <goal>yarn</goal>-->
<!-- </goals>-->
<!-- <configuration>-->
<!-- <arguments>run build:prod</arguments>-->
<!-- </configuration>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
<!-- </plugins>-->
<!-- </build>-->
<!-- </profile>-->
<profile>
<id>yarn-start</id>
<activation>
<property>
<name>yarn-start</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<configuration>
<installDirectory>target</installDirectory>
<workingDirectory>${basedir}</workingDirectory>
</configuration>
<executions>
<execution>
<id>yarn start</id>
<goals>
<goal>yarn</goal>
</goals>
<configuration>
<arguments>start</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
多个设备Client如何连接同一个设备?
❓ 多个client如何使用同一个设备token进行连接?
答案
修改application模块下的thingsboard.yml配置参数max_concurrent_sessions_per_device,默认值是1。
如何保证数据传输的安全?
❓ 如何保证数据传输的安全?
答案
您可以使用MQTT(SSL)或HTTPS协议进行传输加密。
Java编译异常: java.lang.IllegalAccessError
❓ java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0xbb3dd4f) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module
💡 提示
Java 9 及以后版本中引入了模块系统(JPMS)而导致的。在 Java 9 之前,JDK 的内部类是可以被直接访问的,但是从 Java 9 开始,这些内部类被封装在模块中,并且默认情况下是不可访问的。
答案
方案1:降低JDK版本
方案2:增加JVM参数【–add-exports】
mvn compile -Dmaven.compiler.release=11 -Dmaven.compiler.args="--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED"
ThingsKit使用的JDK版本?
❓ ThingsKit使用的JDK版本?
答案
JDK11
maven编译提示:gradle插件无法下载
答案
将上面的离线包,放入环境变量GRADLE_USER_HOME指定的目录。如果没有 GRADLE_USER_HOME 目录,即当前用户的.gradle目录下。例如:C:\Users\chengliang\.gradle\wrapper\dists\gradle-7.1.1-bin
例如gradle-7.1.1-bin.zip放入对应的目录wrapper\dists\gradle-7.1.1-bin\f29rtwfnc96ub43tt7p47zsru下。
HTTP Transport Service:FAILURE gradle插件无法下载
答案
检查一下maven的配置,进入maven的安装目录,找到conf修改settings.xml
前端使用的Node版本?
❓ 前端使用的Node版本?
答案
16.13+