java:找不到符号报错的排错方案举例

 更新时间:2024年01月03日 10:33:45   作者:刘大猫.  
当你使用一个未定义或未导入的类时,编译器会报错,下面这篇文章主要给大家介绍了关于java:找不到符号报错的排错方案,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、报错如图

报错如图:

二、自己当前项目背景描述:

自己当前项目描述:我们的项目要求必须使用jdk1.8才能运行,其他版本均会启动失败,且打包报错xx符号找不到。

三、排错方案举例

当报错找不到符号的时候考虑如下几种情况:

方案1:考虑Project Structure设置中Project中jdk版本是否对,确保所有子模块改为jdk1.8就好了

方案2:考虑设置中java编码方式中各个子模块版本是否为1.8,确保检查了所有的子模块都设置对才行。

方案3:考虑考Project Structure设置中SKDS中jdk版本是否对,确保右侧加载的就是8版本的而不是11版本的

方案4:考虑Project Structure设置中Modules中jdk版本是否对

方案5:接下来考虑打包引入方面,我的项目是多模块项目,避免不了会相互依赖,有没有可能是报错的类所在的模块下没有引入类成功呢 比如我的项目多模块如图:

首先找到你报错所在的模块,假如是ems模块,先尝试点击report,重新导入依赖,比如如图,然后触发打包验证是否已经正常无报错。

如果不好使,重新构建项目再触发清除包和打包操作,重构点击这里,然后触发打包验证是否已经正常无报错。

然后在maven中找到你的模块先点击clearn清除打包,然后再触发【install | package】重新打包到本地(这里点击package或者install都可以,效果相同,顶多是命令作用不同而已),验证是否正常。

方案6:(最最最容易忽视的一点)检查mvn引入jdk版本

前提背景已经说了,我的项目必须跑在jdk1.8才行,这个找不到的符号只有在jdk1.8才有,之后的jdk版本就删除了。
在此基础上我们排查5个方案且都不好使的情况下,排查了IDAE的设置等等发现都没有问题,那么我们最该排查的一点就是mvn究竟引入了哪个版本的jdk。

问题:你可能会问为啥需要排查mvn?

答案:因为实际项目场景肯定是多环境、多jdk版本的,A项目使用jdk8,B项目使用jdk11,完全可能存在,而且maven可能也是多个环境的,因此需要排查。

首先我们排查自己电脑究竟安装了几个jdk版本:经查看,我自己电脑安装了2个版本,分别是8和11

接下来排查mvn究竟引入了哪个jdk版本,在CMD窗口或者IDEA中执行命令查看,结果如图:

命令:mvn -v

问题:我当时第一次排查是发现引入结果是jdk11版本,而不是8版本,为什么?为啥引入的是11版本?

答案:因为你配置了环境变量,把JAVA_HOME为11版本的配置进path中了。这就是最终原因所在,因为你配置了jdk环境变量所以报错。因为一旦配置环境变量,maven在加载时自动优先高级别加载环境变量中的jdk版本,从而导致类无法找到。

接下来就是修改方案:我们只需找到该项目所使用maven是哪个版本,找到该文件夹F:\apache-maven-3.6.3\bin中mvn.cmd配置脚本补充导致哪个jdk版本就可以了,具体如图

第一步找到maven所在的文件夹,找到脚本

第二步在其中加入jdk所在的目录,只要配置了,当前maven版本文件加载时就只会加载jdk8版本,引入位置最好写在最前面左右位置。

第三步再次执行命令查看是否修改成功

总结 

到此这篇关于java:找不到符号报错的排错方案的文章就介绍到这了,更多相关java:找不到符号报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现画图 给图片底部添加文字标题

    Java实现画图 给图片底部添加文字标题

    这篇文章主要介绍了Java实现画图 给图片底部添加文字标题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java实现学生成绩管理系统

    Java实现学生成绩管理系统

    这篇文章主要为大家详细介绍了Java实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Java实战之实现物流配送系统示例详解

    Java实战之实现物流配送系统示例详解

    这篇文章主要介绍了一个java实战项目:通过java、SSM、JSP、mysql和redis实现一个物流配送系统。文中的示例代码非常详细,需要的朋友可以参考一下
    2021-12-12
  • 基于ScheduledExecutorService的两种方法(详解)

    基于ScheduledExecutorService的两种方法(详解)

    下面小编就为大家带来一篇基于ScheduledExecutorService的两种方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java面试必考的关键字的用法汇总

    Java面试必考的关键字的用法汇总

    这篇文章主要为大家详细介绍了Java中的几种关键字相关知识,本文比较适合刚入坑Java的小白以及准备秋招的大佬阅读,需要的小伙伴快收藏起来吧
    2023-06-06
  • Java序列化机制详解

    Java序列化机制详解

    Java 序列化机制是一种将对象转换为字节流的过程,以便在网络上传输或保存到文件中,并能在需要时将字节流还原为对象,这一机制通过实现 java.io.Serializable 接口来实现,同时涉及到一些关键概念和注意事项,需要的朋友可以参考下
    2023-12-12
  • 浅谈java线程join方法使用方法

    浅谈java线程join方法使用方法

    这篇文章主要介绍了浅谈java线程join方法使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java通过HttpClient进行HTTP请求的代码详解

    Java通过HttpClient进行HTTP请求的代码详解

    Apache HttpClient是一个功能强大且广泛使用的Java库,它提供了方便的方法来执行HTTP请求并处理响应。本文将介绍如何使用HttpClient库进行HTTP请求,包括GET请求、POST请求、添加参数和请求体、设置请求头等操作,需要的朋友可以参考下
    2023-05-05
  • Java中不常用但很好用的开发小技巧分享

    Java中不常用但很好用的开发小技巧分享

    其实干 Java 开发,必然离不开一些计算,所以就会经常用到 BigDecimal ,今天小编就来给大家分项一下那些不怎么常用,但是非常有用的方法,需要的可以参考一下
    2023-04-04
  • Java8中的Stream 流实践操作

    Java8中的Stream 流实践操作

    这篇文章主要介绍了Java8中的Stream 流实践操作,Stream 是 java8 中处理集合的抽象概念,可以执行非常复杂的查询、过滤和映射数据等操作,下文更多相关资料介绍,需要的朋友可以参考一下
    2022-05-05

最新评论