Centos7部署Sonic前后端和Agent 端

news2024/11/18 15:40:20

前言

1、sonic介绍

  • Sonic是一款开源、支持分布式部署、在线自动化测试的私有云真机平台,Sonic官网地址

功能特性:
在这里插入图片描述
Sonic架构:
在这里插入图片描述

2、准备工作

①准备两台设备,并安装Centos系统,设备名称简称:设备1和设备2
系统版本如下:
在这里插入图片描述
②准备一台Android设备,并开启USB调试

③准备一台操作电脑,并安装FinalShell工具


一、Sonic Server 部署

1、连接服务器

  • 通过FinalShell远程连接设备1,并进入/home目录

在这里插入图片描述
·········································································································································

2、新建文件

  • 新建SonicServer.sh文件

在这里插入图片描述

  • 并添加以下内容,保存

注释:

  • 第125行,new_passwd=“123abc” 为初始默认密码,建议修改密码
  • 第146行,ip=“192.168.100.230” 修改为当前服务器的IP地址
#!/bin/bash

# 安装Docker
InstallDocker()
{
	#1.安装依赖的软件包, yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
	yum install -y yum-utils  device-mapper-persistent-data  lvm2
	#2.添加yum源,如该源无法使用可以使用阿里云Docker Yum源替代
	# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	# yum makecache fast
	yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
	#3.安装docker
	yum install -y docker-ce
	#4.启动docker
	systemctl start docker.service
	#5.设置开机自启动
	systemctl enable docker.service
	#6.查看版本
	docker version
	if [ $? -eq 0 ]; then
		echo "Docker安装成功"
	else
		echo "Docker安装失败,请检查配置是否有误"
		exit 1
	fi
}

#安装docker-compose
Installcompose()
{
	#1.安装docker-compose github地址无法使用时可以选择国内http://get.daocloud.io/#install-compose网站上面的地址
	curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
	#2.赋予权限
	chmod +x /usr/local/bin/docker-compose
	#3.查看版本
	docker-compose -v
	if [ $? -eq 0 ]; then
		echo "docker-compose安装成功"
	else
		echo "docker-compose安装失败,请检查配置是否有误"
		exit 1
	fi
}

#安装mysql
InstallMysql()
{
	mariadb=`rpm -qa | grep mariadb` #执行指令用反引号
	if [ $mariadb ]; then
		rpm -e $mariadb --nodeps
	fi
	yum -y install wget
	yum -y install libaio
	mkdir -p ./mysql
	wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar -O ./mysql/mysql.tar
	cd mysql
	tar -xvf mysql.tar
	common=`find . -name "mysql-community-common*"`
	libs=`find . -name "mysql-community-libs-8*"`
	client=`find . -name "mysql-community-client*"`
	server=`find . -name "mysql-community-server*"`
	rpm -ivh $common
	rpm -ivh $libs
	rpm -ivh $client
	rpm -ivh $server --force --nodeps
	mysqld --initialize
	chown mysql:mysql /var/lib/mysql -R
	systemctl start mysqld.service
	systemctl enable mysqld
	cd ../
}

#安装Iptables
InstallIptables()
{
	#关闭firewalld防火墙
	systemctl stop firewalld.service
	systemctl disable firewalld.service
	systemctl mask firewalld.service
	#安装iptables
	yum -y install iptables-services
	systemctl enable iptables
	systemctl start iptables
	#将匹配的行进行删除
	iptables="/etc/sysconfig/iptables"
	sed -i '/COMMIT/d' "$iptables"
	sed -i '/--dport 80 -j/d' "$iptables"
	sed -i '/--dport 3306/d' "$iptables"
	sed -i '/--dport 443/d' "$iptables"
	sed -i '/--dport 3000/d' "$iptables"
	sed -i '/--dport 9090/d' "$iptables"
	sed -i '/--dport 10389/d' "$iptables"
	sed -i '/--dport 8094/d' "$iptables"
	sed -i '/--dport 8095/d' "$iptables"
	sed -i '/--dport 7777/d' "$iptables"
	sed -i '/INPUT -j REJECT/d' "$iptables"
	sed -i '/FORWARD -j REJECT/d' "$iptables"
	#写入
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 9090 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 10389 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 8094 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 8095 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT">>$iptables
	echo "-A INPUT -j REJECT --reject-with icmp-host-prohibited">>$iptables
	echo "-A FORWARD -j REJECT --reject-with icmp-host-prohibited">>$iptables
	echo "COMMIT">>$iptables

	systemctl restart iptables.service
	systemctl enable iptables.service
}

#配置MySQL数据库
Configure_mysql()
{
	#库名
	db="sonic"
	#获取默认密码
	initial_passwd=`cat /var/log/mysqld.log | grep password` #执行指令用反引号
	obtain_passwd=${initial_passwd#*localhost: } #冒号后面有个空格,需要注意
	#获取新密码,设置的默认密码为123abc,用户可自定义修改
	new_passwd="123abc"
	#连接数据库并修改密码
	mysql -uroot -p$obtain_passwd --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$new_passwd';"
	#设置远程连接
	mysql -uroot -p$new_passwd --connect-expired-password -e "create user 'root'@'%' identified with mysql_native_password by '$new_passwd';grant all privileges on *.* to 'root'@'%' with grant option;ALTER USER 'root'@'localhost' IDENTIFIED BY '$new_passwd' PASSWORD EXPIRE NEVER;flush privileges;"
	#新建数据库并导入库
	mysql -uroot -p$new_passwd --connect-expired-password -e "create database $db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
}

#部署前后端
InstallServer()
{
	#1.创建sonicserver文件夹
	mkdir sonicserver
	#2.进入sonicserver文件夹
	cd sonicserver
	#3.下载服务端包,新版本可去官网获取,https://github.com/SonicCloudOrg/sonic-server/releases
	wget https://github.com/SonicCloudOrg/sonic-server/releases/download/v2.3.1/sonic-server-v2.3.1.zip
	#4.解压文件
	unzip sonic-server-v2.3.1.zip
	#5.更改.env 中的信息,IP地址写服务器地址
	ip="192.168.100.230"
	#Service Config
	sed -i "s/SONIC_SERVER_HOST=.*/SONIC_SERVER_HOST=$ip/" .env
	sed -i "s/SONIC_EUREKA_USERNAME=.*/SONIC_EUREKA_USERNAME=sonic/" .env
	sed -i "s/SONIC_EUREKA_PASSWORD=.*/SONIC_EUREKA_PASSWORD=sonicabc123/" .env
	#MySQL Config
	sed -i "s/MYSQL_HOST=.*/MYSQL_HOST=$ip/" .env
	sed -i "s/MYSQL_PASSWORD=.*/MYSQL_PASSWORD=$new_passwd/" .env
	#User Config
	sed -i "s#LDAP_URL=.*#LDAP_URL=ldap://$ip:10389#" .env
	#6.重启docker,保证服务正常
	service docker restart
	#7.部署
	docker-compose up -d
}

# ping百度3次,检查网络连接是否正常
ping -c3 www.baidu.com
#shell脚本中$?是指上一次命令执行的成功或者失败的状态。如果成功就是0,失败为1
if [ $? -eq 0 ]; then
	InstallDocker
	Installcompose
	InstallMysql
	InstallIptables
	Configure_mysql
	InstallServer
else
	echo "无法连接网络,请检查网络!"
	exit 1
fi

·········································································································································

3、执行脚本

  • 赋777权限,并执行脚本
chmod 777 SonicServer.sh
./SonicServer.sh

在这里插入图片描述
脚本执行完成后,前后端部署就完成了(因 Eureka 心跳机制,刚启动完毕微服务间互相访问需要 3~5 分钟,请耐心等候)打开浏览器访问 http://ip/:3000)
在这里插入图片描述


二、获取Sonic Agent key

1、注册账号

在这里插入图片描述

2、新增Agent

  • 注册成功后,点击设备中心-Agent中心,点击新增Agent
  • 填写名称,确定
    在这里插入图片描述

3、复制Agent Key

  • 点击复制
    在这里插入图片描述

三、Sonic Agent部署

1、连接服务器

  • 通过FinalShell远程连接设备2,并进入/home目录

在这里插入图片描述
·········································································································································

2、新建文件

  • 新建SonicAgent.sh文件
    在这里插入图片描述
  • 并添加以下内容,保存
#!/bin/bash

# 安装JDK并配置环境变量,已知部分 JDK 出现不兼容的问题,Sonic 官方推荐使用 JDK15
Installjar()
{
	#1.进入目录
	cd /usr/local/
	#2.下载JDK15
	wget https://corretto.aws/downloads/latest/amazon-corretto-15-x64-linux-jdk.tar.gz
	#3.解压文件
	tar -zxvf amazon-corretto-15-x64-linux-jdk.tar.gz
	#4.修改名称
	mv amazon-corretto-15.0.2.7.1-linux-x64 java
	#5.配置jdk环境变量
	echo "" >> /etc/profile
	echo "#JAVA_HOME" >> /etc/profile
	echo "export JAVA_HOME=/usr/local/java" >> /etc/profile
	echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
	#6.source生效
	source /etc/profile
	#7.查看版本
	java -version
	if [ $? -eq 0 ]; then
		echo "jdk安装成功"
	else
		echo "jdk安装失败,请检查配置是否有误"
		exit 1
	fi
}

# 安装node及npm环境配置
Installnode()
{
	#1.下载node
	wget https://cdn.npmmirror.com/binaries/node/v16.14.2/node-v16.14.2-linux-x64.tar.xz
	#2.解压文件
	tar -xvf node-v16.14.2-linux-x64.tar.xz
	#3.修改名称
	mv node-v16.14.2-linux-x64 node
	#4.配置node环境变量,不知道为啥source /etc/profile在shell脚本中不行,需要手动执行,所以多加一个软链接
	echo "" >> /etc/profile
	echo "#node" >> /etc/profile
	echo "export NODE_HOME=/usr/local/node/bin/" >> /etc/profile
	echo "export PATH=\$NODE_HOME:\$PATH" >> /etc/profile
	source /etc/profile
	#创建软链接,以便可以在任意目录下使用 node 和 npm 命令
	ln -s /usr/local/node/bin/node /usr/local/bin/node
	ln -s /usr/local/node/bin/npm /usr/local/bin/npm
	#5.source生效
	source /etc/profile
	#6.查看版本
	node -v
	if [ $? -eq 0 ]; then
		echo "node安装成功"
	else
		echo "node安装失败,请检查配置是否有误"
		exit 1
	fi

	npm -v
	if [ $? -eq 0 ]; then
		echo "npm安装成功"
	else
		echo "npm安装失败,请检查配置是否有误"
		exit 1
	fi
}

#Appium安装
InstallAppium()
{
	#1.使用npm安装Appium
	npm install -g appium
	#2.source生效
	source /etc/profile
	#3.查看版本
	appium -v
	if [ $? -eq 0 ]; then
		echo "appium安装成功"
	else
		echo "appium安装失败,请检查配置是否有误"
		exit 1
	fi
}

#adbkit安装
Installadbkit()
{
	#1.使用npm安装adbkit
	npm i -g adbkit
	#2.source生效
	source /etc/profile
	#3.查看版本
	adbkit -V
	if [ $? -eq 0 ]; then
		echo "adbkit安装成功"
	else
		echo "adbkit安装失败,请检查配置是否有误"
		exit 1
	fi
}

#下载SDK Tools的安装包并配置环境
InstallSdk()
{
	#1.下载
	wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
	#2.解压文件
	tar -zxvf android-sdk_r24.4.1-linux.tgz
	#3.修改名称
	mv android-sdk-linux android
	#4.配置Sdk环境变量
	echo "" >> /etc/profile
	echo "#SDK_Tools" >> /etc/profile
	echo "export ANDROID_HOME=/usr/local/android" >> /etc/profile
	echo "export PATH=\$ANDROID_HOME/tools:\$PATH" >> /etc/profile
	echo "export PATH=\$ANDROID_HOME/platform-tools:\$PATH" >> /etc/profile
	#5.source生效
	source /etc/profile
	#6.安装sdk ,遇到询问直接y即可
	android update sdk -u -a -t 1,2
	#7.查看版本
	adb version
	if [ $? -eq 0 ]; then
		echo "SDK_Tools安装成功"
	else
		echo "SDK_Tools安装失败,请检查配置是否有误"
		exit 1
	fi
}

#安装谷歌浏览器并配置
Installgoogle()
{
	#1.下载谷歌浏览器
	wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
	#2.安装谷歌浏览器
	yum install -y google-chrome-stable_current_x86_64.rpm
	#3.配置修改
	sed -i '/exec -a "$0" "$HERE\/chrome" "$@"/d' "/opt/google/chrome/google-chrome"
	echo 'exec -a "$0" "$HERE/chrome" "$@" –user-data-dir –no-sandbox' >> /opt/google/chrome/google-chrome
	#4.chrome驱动安装,该部分需要手动执行
}

#下载Agent端
InstallAgent()
{
	#1.下载
	mkdir /home/sonicAgent
	cd /home/sonicAgent
	#加速链接,如果失效,请去官网下载新的包https://sonic-cloud.cn/deploy/agent-deploy.html
	wget https://ghproxy.com/https://github.com/SonicCloudOrg/sonic-agent/releases/download/v2.3.1/sonic-agent-v2.3.1-linux_x86_64.zip
	#2.解压文件
	unzip sonic-agent-v2.3.1-linux_x86_64.zip
	#3.配置文件修改,该部分需要手动执行
}

#关闭firewalld防火墙
firewalld()
{
	systemctl stop firewalld.service
	systemctl disable firewalld.service
	systemctl mask firewalld.service
}

# ping百度3次,检查网络连接是否正常
ping -c3 www.baidu.com
#shell脚本中$?是指上一次命令执行的成功或者失败的状态。如果成功就是0,失败为1
if [ $? -eq 0 ]; then
	Installjar
	Installnode
	InstallAppium
	Installadbkit
	InstallSdk
	Installgoogle
	InstallAgent
	firewalld
else
	echo "无法连接网络,请检查网络!"
	exit 1
fi

3、执行脚本

  • 赋777权限,并执行脚本
chmod 777 SonicServer.sh
./SonicAgent.sh

在这里插入图片描述
输入y,回车
在这里插入图片描述

4、chrome驱动配置

  • 先查看当前谷歌版本,并下载对应驱动
/opt/google/chrome/chrome -version

在这里插入图片描述

  • 进入chrome驱动官网下载对应版本的驱动,下载地址,下载完成后上传至/opt/google/chrome目录,使用unzip解压(版本小数点最后两位不一样不影响,前面必须一样)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、Sonic Agent配置

  • 修改配置文件
vi /home/sonicAgent/config/application-sonic-agent.yml

在这里插入图片描述

  • 首次部署完成后先执行source /etc/profile,再启动Agent,后续启动Agent无需执行
cd /home/sonicAgent
java -Dfile.encoding=utf-8 -jar sonic-agent-xxxx.jar

在这里插入图片描述
部署完成!


四、连接手机

1、连接手机

  • 手机通过USB线连接Sonic Agent(手机需要开启USB调试)

  • 登录Sonic Server后台,点击设备中心-Agent中心,查看Agent是否在线
    在这里插入图片描述
    进入设备中心,查看设备
    在这里插入图片描述


五、常见问题(Q&A)

Q1: Sonic Server设备重启,等待5分钟后,web端登录页面提示"系统出错了!“或"后台准备中…请稍后…”,该如何解决?

A1: 该问题是Sonic Server相关容器未启动,需要手动启动

  1. 查看本地所有容器,包含未启动的
 docker ps -a

在这里插入图片描述
2. 启动容器

docker start 93cb3e7c2e30

在这里插入图片描述
3.等待3分钟后,刷新web端,即可恢复正常。

Q2: 需要开放哪些端口?
A2: Sonic Server端:3306、3000、9090、10389、8094、8095 / Sonic Agent端:7777

Q3: Sonic Agent端离线?
A3: 检查服务是否有启动,如未启动,者启动服务(启动方法查看Sonic Agent配置)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】Java零基础第一节

Java.java 与 .class关于开发环境 - SDK第一个程序 - Hello worldJava程序理解 - Classes, New, Methods and Type.java 与 .class xxx.java文件: 存储的是人类语言可以看懂的高级语言(Language),但是计算机不能看懂; xxx.class文件&#xf…

【YOLO V5】代码复现过程

接上篇,讲到如何从mask转成YOLOv5训练需要的txt数据集格式,这篇就在此基础上进行模型训练预测和部署转换吧! 目录 1.环境准备 2.YOLO训练 2.1 数据集准备 2.2 data.yaml准备 2.3 yolov5.yaml准备 2.4 训练命令 3.YOLO预测 3.1OLOv5 P…

大猫盘 黑群晖 不用Docker 部署属于自己的聊天工具voceChat

引入 原因很简单我有个大猫盘,自己搞成了黑群,不支持Docker,我自己购买了域名,做了ddns解析,给群晖加了ssl证书,感觉既然数据安全了,服务也在自己家里能不能搭建一个自己的聊天软件&#xff0c…

windows下nvvp的基础使用1

windows下nvvp的基础使用1 cuda编程的重要帮手可视化工具nvvp 本来先写nsignt的使用方式,不过折腾了一会发现没弄得那么明白.先用着nvvp好了,毕竟只是先看书配合着写点简单的cuda代码而已 安装建议 在windows下安装cuda的话,也就那回事,自己可以参考一下搜索引擎 (win10安…

一次漏洞挖掘的简单组合拳

前言: 在最近的wxb举行hw中,同事让我帮他看看一些后台登录站点。尝试了未授权,弱口令皆无果,要么不存在弱口令,要么有验证码,没办法绕过。本文章仅提供一个思路,在hw中更多时候并不推荐尝试这种…

给正在注册或即将注册个体工商户营业执照的你

大家好,我是中国码农摘星人。 欢迎分享/收藏/赞/在看! 作为程序员,平时除了主业,发展一些副业再正常不过。为了取得开展业务的合法性、合规性,以及后续的拓展,避免产生不必要的纠纷,这边就得注册…

ChatGPT真的会取代程序员吗?

程序员这两年被碰的瓷儿可不少啊,这架势不像是AI抢了程序员的饭碗,倒像是程序员抢了AI的饭碗一样...... 前两年低代码出来了,你们说程序员要被取代了,惹得大神们一顿输出;去年元宇宙出来了,你们又说程序员…

map相关接口(map接口、HashMap、LinkedHashMap、TreeMap)

Java知识点总结:想看的可以从这里进入 目录8.3、map结构8.3.1、 map接口8.3.2、HashMap8.3.3、LinkedHashMap8.3.4、TreeMap8.3、map结构 8.3.1、 map接口 map的集合是以键值对的形式存在的 (key-value),每个键只能对应一个值,通常通过键去…

什么表单设计工具能快速提升办公效率?

在信息化快速发展的年代,谁能掌握更先进的技术,谁就能拥有更广阔的发展前景。在以前的办公环境中,传统的表单制作工具占据了主流地位,随着办公自动化的快速发展,传统表单工具的弊端也暴露出来了,采用更先进…

m0n0wall防火墙(10)

实验目的 1、深入理解防火墙的功能和工作原理; 2、熟悉软件防火墙,掌握m0n0防火墙的规则和配置。预备知识 m0n0wall M0n0wall是基于FreeBSD内核开发的免费软件防火墙。m0n0wall提供基于web的配置管理、提供VPN功能、支持DHCP Server、DNS转发、动态DNS…

maddpg 复现过程中遇到的问题

最近在复现论文Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments https://github.com/openai/multiagent-particle-envshttps://github.com/philtabor/Multi-Agent-Deep-Deterministic-Policy-Gradients.gitGitHub - philtabor/Multi-Agent-Deep-Dete…

windows配置c语言编译系统-wingw gcc cmake

前言 笔者在做嵌入式mcu编程的时候,有时候想要验证一下部分代码的功能,需要先编译成bin文件,然后烧录到mcu内执行。每次编译烧录运行耗时较久。于是想到是不是可以在电脑上配置一个c的编译环境,来验证一些与硬件不相干的代码。验…

idea多时编辑多行-winmac都支持

1背景介绍 idea编辑器非常强大,其中一个功能非常优秀,很多程序员也非常喜欢用。这个功能能够大大大提高工作效率-------------多行代码同时编辑 2win 2.1方法1 按住alt鼠标左键上/下拖动即可 这样选中多行后,可以直接多行编辑。 优点&a…

jsp物品找回系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 物品找回系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5 开发,数据库为Mysql,使用j…

一文搞定python语法进阶

前言前面我们已经学习了Python的基础语法,了解了Python的分支结构,也就是选择结构、循环结构以及函数这些具体的框架,还学习了列表、元组、字典、字符串这些Python中特有的数据结构,还用这些语法完成了一个简单的名片管理系统。下…

Java基础-类加载器

写在前面的话: 基础加强包含了: 反射,动态代理,类加载器,xml,注解,日志,单元测试等知识点 其中最难的是反射和动态代理,其他知识点都非常简单 由于B站P数限制&#xff0c…

交互式前端开发最好用的WebGL框架

JavaScript是创建Web最有用的编程语言之一,尤其是在WebGL库的支持下。有了WebGL,可以很方便地使用 HTML5 Canvas 元素动态生成图形。因此,设计师和开发人员很容易创建流畅的2D和3D效果。WebGL是JavaScript API或基于OpenGL的库,它…

CD20靶向药物|适应症|市场销售-上市药品前景分析

CD20是靶向治疗的第一个靶点,是B细胞淋巴瘤的现代治疗药物。CD20作为治疗剂的使用被认为是方便的,原因有二。首先,在 CD20 阳性肿瘤的情况下,这种受体大量存在于 B 淋巴细胞表面——每个细胞大约有十万个分子。其次,干…

火山引擎入选《2022 爱分析 · DataOps 厂商全景报告》,旗下 DataLeap 产品能力获认可

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 2 月 9 日,国内领先的数字化市场研究与咨询机构爱分析发布了《2022 爱分析DataOps 厂商全景报告》(以下简称报告),报…

java程序,springboot程序 找不到主类,找不到符号解决思路

文章目录问题解决方案一.可以尝试clean掉maven依赖,然后重新启动二.右键工程,选择maven然后重新加载工程,接着再启动试试三.删掉工程中的services.iml文件,重新配置后接着再启动试试四. 终极方案清除idea缓存,重启idea…