重拾者: 每日记录至目前(记录51种不同场景的问题可参考解决方案)
异常就两部分:
1、excepiton信息: 报错产生的原因
2、at开头表示: 异常产生的代码位置。欢迎关注微信公众号:AIMING2020
拆分两篇博客
(第一部分1-35)地址如下:JAVA 经常遇到一些问题【第一部分1~35】
(第一部分36-51)地址如下:JAVA 经常遇到一些问题【第二部分36~51】
目录
问题1:Maven 项目中Cannot find declaration to go to或者运行报Java:程序 X.XXX 不存在
问题2:修改maven 本地仓库和远程仓库
问题3:No archetype found in remote catalog. Defaulting to internal catalog
问题4:Package 'junit:junit' can be upgraded to version '4.13.2'
问题5:Dependency 'org.seleniumhq.selenium:selenium-java:4.0.0' not found
问题6:Exception in thread "main" java.lang.NullPointerException(空指针异常)
问题7:'Throwable' argument 'e.fillInStackTrace()' to 'System.out.println()' call
问题8:Result of 'random.nextInt(target.length - 1)' is always '0'
问题9:报错 Not a statement(不是声明)
问题10:新增java文件添加自动注释模版
问题11:为方法添加自动注释模版
问题12:Map 与HashMap 方法的用法以及结合replaceAll使用
问题13:①同一个类中文件调用方法,②不同类中调用方法
问题14:Collection 'paramMap.keySet()' is always empty
问题15:Exception in thread "main" java.lang.NoSuchFieldError: XXX
问题16:The method XXX cannot be declared static; static methods can only be declared in a static or top level type
问题17:Unhandled exception type NoSuchProviderException
问题18:Mavan、Testng、junt
①Maven 设置自定义仓库本地仓库
问题19: 'XXX' is abstract; cannot be instantiated
问题20:Exception in thread "main" org.openqa.selenium.InvalidArgumentException: invalid argument 使用js 点击输入图片
问题21:email 发送问题归纳
疑问①:Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
疑问②:javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 587; nested exception is:javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
疑问③:javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1
疑问④:Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 587;
疑问⑤:javax.mail.AuthenticationFailedException
疑问⑥:com.sun.mail.smtp.SMTPSendFailedException: 503 Error: need EHLO and AUTH first !
疑问⑦:javax.mail.AuthenticationFailedException: failed to connect, no password specified?
疑问⑧: Unhandled exception type NoSuchProviderException
疑问⑨:javax.mail.AuthenticationFailedException: 535 Login fail. Authorization code is expired
问题22:Unhandled exception type NoSuchProviderException
问题23:Log4j2报错并且没有生成log日志文件
问题24:非错误类,byte直接输出十进制,怎么输出二进制??
问题25:非错误类,方法中含byte数组参数如何输入调用??
问题26:com.fasterxml.jackson.core.JsonParseException:
问题27:pom.xml项目管理文件中结构
问题28:Exception in thread "main" com.alibaba.fastjson2.JSONException: unclosed
问题29:java.lang.StringIndexOutOfBoundsException: String index out of range: -1
问题30:ElementNotInteractableException: Element XXXX could not be scrolled into view
问题31:在cmd中运行jar包出现 报错XXX.jar中没有主清单属性 怎么回事呢?
问题32:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: X
问题33:运行jar包时 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
问题34:Connect to 127.0.0.1:8888 [/127.0.0.1] failed: Connection refused: connect
问题35:在postman 可以请求,但在httpcliect发起请求返回响应状态码400
问题36:fastjson2.JSONException: offset X, character X, line X, column X
问题37:Cannot resolve symbol 'XXXXXX'
问题38:Exception in thread "main" java.lang.ClassCastException: com.testing.class10.Cat cannot be cast to
问题39:java.lang.IllegalArgumentException: Keys to send should be a not null CharSequence:
问题40:org.yaml.snakeyaml.error.YAMLException: java.io.IOException: Stream closed
问题41:'dependencies.dependency.version' for org.jetbrains:annotations:jar is either LATEST or RELEASE (both of them are being deprecated) @ line 63, column 22
问题42:'Missing management agent resource bundle: key = ""'
问题43:解决Springboot启动报错:类文件具有错误的版本61.0,应为 52.0
启动Springboot项目时候报错
原因
问题44:类文件具有错误的版本 55.0, 应为 52.0
问题45: Exception in thread "main" java.lang.UnsupportedOperationException
问题46: Exception in thread "main" java.lang.UnsupportedOperationException
问题47:调用企业微信响应报错:"errcode":60020
问题48:Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'controller' method
问题49:java.lang.NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup
问题50:java.lang.AbstractMethodError: love.forte.simbot.spring.autoconfigure.SimbotAppPropertiesConfiguration.registerBeanDefinitions
问题51:连接数据库出现错误(windows更新8.XX版本以上)
疑问①:数据库连接配置失败,报错内容: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
疑问②:"main" java.lang.RuntimeException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
疑问③:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
疑问④:java.lang.IllegalArgumentException: Property 'dataSource' is required
原因:IDEA编译环境发生变化了;使用 CTRL + 鼠标键
尝试ctrl+鼠标左键进入该类,提示“Cannot find declaration to go to”或者“Cannot find bean with qualifier ‘*********’”
①导入项目的时候使用的是Open (不重要)
②检查pom文件配置,确认是否引入相应jar路径 (*******重要********)
③清理缓存 File --> Invalidate Caches / Restart ,重启IDEA;
④标记资源目录 右键项目名,Mark Directory as --> Sources Root。
⑤检查项目导包目录基本 (重要)
⑥如果是依赖包,要重新导入依赖
右侧的窗口选中Maven --> 选中模块,右键 --> Reimport
或者
右键项目名,Maven --> Reimport。(*******重要********)
⑦maven包管理的clean方法
Cannot find declaration to go to的解决方法_大漠老酒的博客-CSDN博客
Log4j – Apache Log4j 2 引用 log4j 的依赖包
配置组件 | Selenium 引用 selenium 的依赖包
添加Maven仓库
引入依赖包方法 https://mvnrepository.com/ 搜索相关关键词
引入依赖包方法 Maven Central 搜索相关关键词
外网下载依赖包方法 Download JAR files with all dependencies
Maven官方有两个插件列表,
第一个列表的GroupId 为 org.apache.maven.plugins
,这里的插件最为成熟,具体地址为:Maven – Available Plugins 。
第二个列表的GroupId 为 org.codehaus.mojo
,这里的插件没有那么核心,但也有不少十分有用,其地址为: http://mojo.codehaus.org/plugins.html 。
在使用IDEA使用Maven模板创建项目或者在当前项目中New Project,Maven的以下配置参数解释
添加Spring仓库
在当前工程的pom.xml
文件中指定Spring官方仓库的地址:
正式仓库
:https://repo.spring.io/artifactory/release/ 适用于生产环境
测试仓库
:https://repo.spring.io/artifactory/snapshot/
Spring boot仓库设置 作者:一只袜子
链接:https://www.jianshu.com/p/6654e9fec93b
spring-snapshots
https://repo.spring.io/artifactory/release/
spring-milestones
https://repo.spring.io/artifactory/snapshot/
①maven 存在部分仓库插件无法下载成功
②Maven本地安装目录conf下的settings.xml和user settings file”所示的路径下的settings.xml配置不一样造成的问题
开始时安装本地仓库时[ERROR] Error executing Maven.
原因:是maven的settings.xml设置出了一些问题。
settings.xml是用来配置和管理maven自身配置到的设置文件。一般每个公司都会有自己的settings.xml,这个文件可以直接找同事要一份。
笔者用IDEA开发项目,maven用了自己安装的maven,所开发的项目主要用到的项目依赖大多来自公司的私有仓库,settings就找同事要了一份,并放在了“user settings file”所示的路径下自己设置路径,本博客路径:D:\script\database_plug\.m2
解决办法:
①使用mavan自己仓库
下载地址:Maven – Download Apache Maven
②阿里云镜像Maven的仓库
【腾讯文档】阿里云镜像Maven的仓库 settings.xml
阿里云官网地址暂无,日后推荐
原因:下载archetype-catalog.xml
下载地址:http://repo1.maven.org/maven2/archetype-catalog.xml 该网点不存在
解决办法一:可以不用管【因为使用了maven模版构建项目,要从网上获取模版,然而没有找到这个模版或者网络慢,导致获取失败 】
解决办法二:创建mavav项目时 添加属性: archetypecatalog=internal
;
[WARNING] No archetype found in remote catalog. Defaulting to internal catalog(已解决)_明月几时有666的博客-CSDN博客
junit:junit 单元测试框架,具体junit 环境配置IDEA
File->Setting->build->Maven 将always update snapshots选中
Exception in thread "main" java.lang NullPointerException
参考详解空指针异常说明:细说Java中的空指针异常
数组必须进行new初始化才能使用其中的元素。
如果只是赋值了一个null,没有进行new创建,原因:忘了new
解决:补上new
例子:测试代码PostUrl,字典报空指针异常错误_Aimin2022的博客-CSDN博客
暂无记录!!!
暂无记录!!!
暂无记录!!!
暂无记录!!!
1.为什么需要申明 这里是for 循环 语法,请参考:Java 基础知识--重拾者AIMING_Aimin20210819的博客-CSDN博客
File-->Settings-->Editor-->File and Code Templates
File----->Settings----->Editor----->Live Templates
----->点击傍边 加号符号 “+” 选择 Templates Group…… ----->输入 method
----->选中刚才输入 method ----->点击傍边 加号符号 “+” 选择 Lives Templates
-----> Abbreviation 输入缩写如:method ; Description输入描述:method notes
----->Templates text 如下:
/** *@effect: *@param: $params$ *@return: $return$ */
----->Define 点击全选 所有都选 ----->
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射;
HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
Map 接口中键和值一一映射. 可以通过键来获取值;
java: 无法将接口 java.util.Map
中的方法 replaceAll应用到给定类型;
需要: java.util.function.BiFunction super java.lang.String,? super java.lang.String,? extends java.lang.String>
找到: java.lang.String,java.lang.String
原因: 实际参数列表和形式参数列表长度不同
//java: 无法从静态上下文中引用非静态 变量 this
//java: 无法从静态上下文中引用非静态 方法 MapPrint()
public class Method {
public static void MapPrint() {
HasMapPrint();
System.out.println("被是main方法---调用");
}
public static void HasMapPrint(){
System.out.println("被不是main方法---调用");
}
public static void main(String[] args) {
MapPrint();
}
}
暂无记录!!!
暂无记录!!!
情况一: 如果后面 “main” java.lang.NoSuchFieldError: level
报错原因:jar包冲突。
解决方法:将冲突或多余的jar包清除即可。
情况二:如果后面 “main” java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY
报错原因:出现了“核弹级”漏洞。
解决方法:项目中引入log4j2最新依赖 比如 log4j-core和log4j-api和log4j-1.2-api 等相关。
The method:xxx cannot be declared static; static methods can only be declared in a static or top level type
方法:xxx 不能声明为静态; 静态方法只能在静态或顶级类型中声明
检查代码,我这多个了:public class Main { 复制代码经常出现该问题
Unhandled exception type XXX 一般出现调用其他类才出现
需要异常抛出:
try {
Transport transport=session.getTransport();
} catch (MessagingException mex) {
mex.printStackTrace();
}
IDEA 配置maven本地仓库,超详细教程_小智2020的博客-CSDN博客_idea配置maven本地仓库
'XXXX' is abstract; cannot be instantiated
“XXX”是抽象的,不能实例化
写好Robot ,我们自己去调用它时候是不能创建对象进行实例化,自定义成员
//我这里举例
//成员变量robot各个方法都要用
public Robot robot;
This operation is permitted on the event thread only; currentThread = main
“机器人”是抽象的; 无法实例化,只能用成员表示
可以直接使用input方法输入Sendkey(contents)
邮件发送参考: Commons Email – Examples
PS_01: 如果连接服务器失败, 都会在控制台输出相应失败原因的 log,仔细查看失败原因, 有些邮箱服务器会返回错误码 或查 看错误类型的链接, 根据给出的错误类型到对应邮件服务器的帮助网站上查看具体失败原因。
PS_02: 连接失败的原因通常为以下几点, 仔细检查代码:
(1) 邮箱没有开启 SMTP 服务;
(2) 邮箱密码错误, 例如某些邮箱开启了独立密码;
(3) 邮箱服务器要求必须要使用 SSL 安全连接;
(4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务;
(5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。
线程“主”java.lang.RuntimeException 中的异常:javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:587;
解决办法:暂无
javax.net.ssl.SSLHandshakeException:没有合适的协议(协议被禁用或密码套件不合适)
// 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 ( 邮箱支持SSL连接) // SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接, // 需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助, // QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)
props.put("mail.smtp.ssl.enable", true);
解决办法:找到jdk 1.8安装目录,找到Java\jre里面的lib\security 下面有个java.security。找到对应的SSLv3,删除掉,重启项目就好了。(删掉SSLv3就是允许SSL调用)
javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:465,响应:-1
解决办法:暂无
线程“主”java.lang.RuntimeException 中的异常:javax.mail.MessagingException:无法连接到 SMTP 主机:localhost,端口:587;
解决办法:暂无 ()
javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:465,响应:-1
⑤解决办法:邮箱账号错误
添加props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
⑥解决办法:重新生成授权码 或者密码
添加props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
javax.mail.AuthenticationFailedException:连接失败,没有指定密码?
需要设置邮箱密码
解决办法:1.依赖包引入错误
2.依赖包引入过多
javax.mail.AuthenticationFailedException: 535 登录失败。 授权码已过期
重新设置授权码
原因:
1.依赖包引入错误
2.依赖包引入过多
官网:Log4j – Frequently Asked Questions
level:日志输出级别,共有8个级别
按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF
报错一:log4j:WARN No appenders could be found for logger
log4j:WARN No appenders could be found for logger (io.netty.util.internal.logging.InternalLoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j2虽然采用xml风格进行配置,依然包含三个组件,分别是 Logger(记录器)、Appender(输出目的地)、Layout(日志布局)
①参数名:pattern 数据类型:String 作用:详见后面的pattern的表格
②参数名:name 数据类型:String :指定Appender的名字 (appenders下级就是 appender的不是指第一个 name=“appender”自定义)用于root 生效
③子节点appender是没有的 只是在 Appenders 子节点就是Appender 需要name定义名字
- Spring Boot Log4j2 日志学习_weixin_33730836的博客-CSDN博客
- 多个
appender
不能指向同一个日志文件,否则会报错:Configuration has multiple incompatible Appenders pointing to the same resource 'logs/mybatis-demo-warn.log'
log4j2.xml配置详解_要强不要秃的博客-CSDN博客_log4j2 xml配置详解
log4j2使用教程 - 柠檬五个半 - 博客园
log4j2
src/mian 下新增中加入resources目录,新增一个配置文件命令为 log4j.properties 文件丢进去。
log4j 1.X开始可能需要请检查jar 需要配置后缀 .properties,官网并没有说这项
log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,
log4j 2.x版本配置文件后缀名只能为".xml",".json"或者".jsn".
报错二:SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". (spring boot项目)
参考:SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".解决办法
官网解决办法:
This error is reported when the org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory. This happens when no appropriate SLF4J binding could be found on the class path. Placing one (and only one) of slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.
翻译过来如下所示:
这个错误是当org.slf4j.impl报道。StaticLoggerBinder类不能被加载到内存中。发生这种情况时,无法找到合适的SLF4J绑定类路径。slf4j-nop.jar放置一个(且只有一个), slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar 或 logback-classic.jar 的类路径应该解决这个问题。
public class ByteOput{
public static void main(String[] args) {
Byte dataByte=0b100101;
System.out.println(dataByte);
}
}
请参考该链接:
比如如下方法中含byte数组:
public static void ByteArr(byte[] arrByte){
System.out.println(Arrays.toString(arrByte) +"数组");
}
public static void main(String[] args) {
//ByteArr(0b1010);//它会自动转成int
}
正确写法如下,输出结果【37】
0b表示二进制,表示进制请参考:Java 基础知识--重拾者AIMING_Aimin20210819
public class ByteData { public static void main(String[] args) { Byte[] dataByte={0b100101}; System.out.println(Arrays.toString(dataByte)); } }
输出Response 中验证码键pic_str对应的值:修改后报错:Exception in thread "main" com.fasterxml.jackson.core.JsonParseException: Unrecognized token '未知问题': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: (String)"未知问题"; line: 1, column: 5]
已经提示了:[Source: (String)"未知问题"; line: 1, column: 5]
Json 含 非json 格式如上提示 出现在“未知问题” 它不是完成键值关系
pom.xml文件简称POM (Project Object Model),是Maven项目的配置和管理核心。
一级节点
二级节点
POM有3个很重要的关系:依赖、继承、合成
详细解释pom.xml:Maven pom.xml文件详解 - 程序员大本营
Exception in thread "main" com.alibaba.fastjson2.JSONException: unclosed.str.lit T
和
Exception in thread "main" com.alibaba.fastjson2.JSONException: unclosed.string T
错误原因一致
原因 存在JSON错误
①.可能存在转义号 \
②.可能存在非键值对关系
③.可能键对应值为空
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1927)
at com.testing.common.ExcelOpenReader.(ExcelOpenReader.java:37)
at com.testing.common.ExcelResult.Summary(ExcelResult.java:34)
at com.testing.common.Report.sendReport(Report.java:14)
at com.testing.run.ApiDDT.main(ApiDDT.java:51)StringIndexOutOfBoundsException 字符串截取下标越界由substring方法引起
用法请参考:https://blog.csdn.net/qq_36675754/article/details/125534069
原因没有 . 所以报错
修改为:
//复制生成xlsx并且写入测试报告,结果文件进行发送邮箱 Report.sendReport(ResultFileName+".xlsx", startTesTime);
需要再build 增加插件;项目pom.xml文件中添加插件spring-boot-maven-plugin
org.springframework.boot spring-boot-maven-plugin
IDEA打包jar步骤:IEDA 、VSCode、PyCHarm软件使用出现的问题_Aimin20210819的博客
ArrayIndexOutOfBoundsException 用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
//如下则会报错
public static void main(String[] args) {
int[] arrays = new int[4];
arrays[4]=90;
}
//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
数组最大最长度为4,则只能从0开始赋值:arrys[0];arrys[1];arrys[2];arrys[3]
数组基础,请参考:Java 基础知识--重拾者AIMING_Aimin20210819的博客-CSDN博客
引入 log4j 包后报错 java.lang.NoClassDefFoundError: Lorg/apache/logging/log4j/Logger
jar 引起冲突;如下三个jar 版本一定要一致的
log4j-core 由原来2.17.1改为2.12.1 log4j-api 由原来2.17.1改为2.12.1 log4j-1.2-api 由原来2.17.1改为2.12.1然后重新打成jar 再次好像不行哟
原因:没有开启代理抓包工具如fiddler
form 单词写错了写成 from