源码仓库地址
1.Problematic frame:C [sigar-amd64-winnt.dll+0x14ed4]
jdk 版本和 sigar-amd64-winnt.dll 不匹配,需要安装合适的 jdk 版本,如:jdk1.8.0_241。
注:类似问题都考虑jdk版本不匹配造成的,需要更换jdk版本。
2.在 jdk1.8 环境下,出现错误:JCE cannot authenticate the provider BC
看到这个不用慌,只是因为缺少一个 jar 而已,添加一个 jar,修改一下 jdk 安全配置就搞定。
a.修改jdk配置
找到自己本地 jdk 安装根目录,进入 jre/lib/security 目录,编辑 java.security 文件,操作如下:
# Linux和MacOS记得要加sudo,windows下直接编辑内容即可
# 进入jdk目录
cd /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/security
# 编辑security文件
sudo vim java.security
打开文件后,添加如下配置:
# 这个序号11根据自己的配置写就行,有可能你的配置和我不一样
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
人家本身是有其他安全配置的,添加完咱们的配置后,配置长这样:
# There must be at least one provider specification in java.security.
# There is a default provider that comes standard with the JDK. It
# is called the "SUN" provider, and its Provider subclass
# named Sun appears in the sun.security.provider package. Thus, the
# "SUN" provider is registered via the following:
#
# security.provider.1=sun.security.provider.Sun
#
# (The number 1 is used for the default provider.)
#
# Note: Providers can be dynamically registered instead by calls to
# either the addProvider or insertProviderAt method in the Security
# class.
#
# List of providers and their preference orders (see above):
#
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=apple.security.AppleProvider
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
#
# Sun Provider SecureRandom seed source.
b.添加jar
jar下载页面:https://gitee.com/monitoring-platform/phoenix/attach_files,下载:bcprov-jdk15on-1.69.jar
将刚才下载好的 jar 文件(bcprov-jdk15on-1.69.jar),复制到 jre/lib/ext/ 目录下,然后就OK了!
3.阿里的Druid警告 discard long time none received connection
解决方案:
方案一,在启动程序时在运行参数中增加:-Ddruid.mysql.usePingMethod=false。
方案二,在 Spring Boot 项目中,可在启动类中添加如下静态代码快:
static {
System.setProperty("druid.mysql.usePingMethod","false");
}
方案三,类文件配置。在项目的 DruidConfig 类中新增加:
/*
* 解决druid日志警告:discard long time none received connection:xxx
*/
@PostConstruct
public void setProperties(){
System.setProperty("druid.mysql.usePingMethod","false");
}
4.执行shell脚本报错 /usr/bin/env: ‘bash\r’: No such file or directory
在执行 shell 脚本时提示这样的错误主要是由于 shell 脚本文件是 dos 格式,即每一行结尾以 \r\n 来标识,而 unix 格式的文件行尾则以 \n 来标识。
解决方案:
方案一:使用 linux 命令 dos2unix filename,直接把文件转换为 unix 格式;
方案二:使用 sed 命令 sed -i "s/\r//" filename 或者 sed -i "s/^M//" filename 直接替换结尾符为 unix 格式;
方案三:vi filename 打开文件,执行 : set ff=unix 设置文件为 unix,然后执行 :wq,保存成 unix 格式。
5.Java客户端集成监控后监控服务端无法发现此客户端
解决方案:
1.检查监控配置文件是否配置正确,尤其是配置项 monitoring.server.url ,看监控服务端 URL 地址是否正确;
2.排查 maven 依赖,看是否有版本冲突。
6.出现错误:javax.mail.AuthenticationFailedException: failed to connect, no password specified?
未正确配置电子邮箱,需要在 SpringBoot 配置文件中正确配置电子邮箱。
#############################################电子邮件配置###############################################
spring:
mail:
host: smtp.qq.com
username: xxx@qq.com
password: xxx
protocol: smtp
default-encoding: UTF-8
port: 465
properties:
mail:
debug: false
smtp:
auth: true
ssl:
enabled: true
starttls:
enable: true
required: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
fallback: false
7.docker部署监控UI端时登录验证码无法显示,导致无法正常登录
项目基于 OracleJDK 1.8 来做的,图片验证码可以正常显示。但是发布到 docker 更换成 OpenJDK 1.8 后,验证码无法显示,后台代码抛出异常,因为 OpenJDK 比 OracleJDK 简化了一些功能,所以用 docker 打包的时候更小,后端生成验证码所要用到 java 的 awt 组件就被简化了,导致一堆的空指针从而无法初始化。
解决方案:
在监控 UI 端通过配置项,关闭登录验证码功能。
##############################################phoenix配置#################################################
phoenix:
auth:
type: self
#登录认证配置
self-auth:
login-captcha:
#是否启用验证码
enable: false
评论