IntelliJ IDEA安装使用过程中常见问题及解决方法列表

本文详细介绍了IDEA中遇到的四个常见问题:1)Java版本设置错误;2)输出内容中文乱码;3)Java三元运算错误;4)Maven工程LanguageLevel问题。还提供了相应解决方法,如修改Java版本、编码设置和处理Spring依赖等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. IDEA安装使用中的常见问题及解决方法列表

1、Error:java: 错误: 不支持发行版本 5:

    在使用IDEA编写一个java WEB Maven项目运行的时候提示报错 Error:java: 错误: 不支持发行版本 5,原来IDEA编辑器在运行的时候默认选择了jdk5版本,需要修改两个地方:

    在Intellij IDEA中点击File -->Project Structure,检查Project和Module两个地方Java版本是否与本地一致。Project选项这里有问题的可能性较小,但Module选项卡里的版本注意看下,我的问题就是出在这里,这里都默认选择了1.5的版本,包括项目和其下的module以及选项卡中的:Project Bytecode version。都修改和本地一致的JDK版本。

    上面的修改只是对当前的项目起了作用,要想让整个IDE以后都选择正确的版本,可通过点击Settings->Bulid, Execution,Deployment->Java Compiler,将Target bytecode version设置为本地Java版本。

2、idea output输出内容中文乱码:

    解决方法:修改启动参数,找到Intellij安装目录\bin\idea.exe.vmoptions(IDEA的安装目录),在末尾加上启动Intellij的参数,-Dfile.encoding=UTF-8;或者点击IDEA的Help菜单,选择Edit Custom VM options,在末尾添加 -Dfile.encoding=UTF-8。修改后重启Intellij即可。

3、Java三元运算Type mismatch: cannot convert from int to boolean:

    Java在进行三元运算符的运算时需要注意,其条件判断表达式必须是一个布尔类型值,而不能是其它的类型,不然就会报错不能将其它类型转为布尔类型。比如Type mismatch: cannot convert from null to boolean、Type mismatch: cannot convert from int to boolean其它等,在有的语言比如PHP中可以自动将前面的值进行转换判断,但在JAVA 中不能,例如:

//在元表达式结构
//variable x = (expression) ? value if true : value if false
int i =1;
//错误的写法
int flag = (i % 2 ) ? 1:-1;
//正确写法
int flag = (i % 2 == 1 ) ? 1:-1;

    就会报错Type mismatch: cannot convert from int to boolean,即不能将i%2求余的值(整数)转换成布尔值,正确的写法要对上面的求余值进行判断以最终是一个布尔值结果。

二. IDEA中Maven工程Language Level默认为5导致不支持

    IDEA中Maven工程Language Level默认为5导致(错误: 不支持发行版本 5)的问题及使用lombok仍然标红解决.

    在使用IDEA建立Maven工程project后,发现每次新建一个module都会导致之前设置的project structer->Language Level的值都重新变成了5版本(之前已经修改过所有module),这个问题是出在maven的Language Level默认为5的原因上。需要编辑project的pom.xml,并指定Java版本。添加如下内容(两种方式都可以,我同时都加上了)。此处可参考上面第二段。新建一个module后就会碰到报错:IDEA:Error:java: 错误: 不支持发行版本 5;当时是通过修改项目结构来解决的,但发现那样并没有真正解决,新建一个module后又会恢复到5版本。而添加下面配置后就能彻底解决这个问题:

<!--添加方式1-->
<properties>
    <!--指定Java版本-->
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

<!--添加方式2-->
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <!--指定Java版本-->
                <source>11</source>
                <target>11</target>
            </configuration>
        </plugin>
    </plugins>
</build>

    为了减少项目代码中大量的如get,set,构造器方法等冗余代码,特别是在使用spring框架时需要大量的set方法,可以使用lombok进行自动快速生成,添加好lombok依赖后只需要在class上注解@Data 即能让代码在编译的时候自动生成get,set,以及构造方法。

    但在idea工具中使用lombok的时候发现使用了lombok注解,但在idea中仍然显示有编译错误的红色标记(并不影响代码的执行),比如类没有提供构造方法,在进行new操作时仍然标红,原因是项目依赖的lombok包虽然加载,但还需要安装lombok插件。

进入file->setting->Plugins->搜索lombok,安装IntelliJ Lombok plugin 插件即可。

三. IDEA报WARN: log4j:WARN Please initialize the log4j

IDEA运行时报WARN: log4j:WARN Please initialize the log4j system properly的解决办法

    之前已经加载了log4j包,之后在运行的时候发现总有这个提示。

log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.

    看提示的意思是需要对log4j的配置进行一些初始化,于是我也把配置文件也放到src/main/resources中了,但是运行时还是依然报这个警告。

    后来去查看了一下target目录classes下的内容,发现并没有log4j.prperties,而mybatis中的配置和db配置文件都正常。如果我直接复制log4j.prperties文件到target下classes目录中,就不会报错,但这不是正常的解决办法。但我运行时并不会自动把log4j.properties文件copy到target目录中去,检查项目结构project structer也正常,resource folder也正确。如下图。

    于是琢磨是不是运行不能重新将这些resources下的文件编译呢,找了找IDEA上的各个功能菜单,试了试很多个,最后发现build->Rebuild Project工具有用,试了一下,果真运行后target下有了log4j.prperties文件。问题解决!

四. IDEA中用maven打包遇到的错误及解决方法小记

    maven打包时遇到File encoding has not been set问题,详细报错File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! 。需要在项目pom.xml文件中增加如下配置项即可:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

    打包的时间碰到报WARNING

[WARNING] /D:/javaidea/api....java: 某些输入文件使用了未经检查或不安全的操作。
[WARNING] /D:/javaidea/api....java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

    一我试了试可以通过在类上面添加 注解:@SuppressWarnings("unchecked") 抑制warning解决。不过另外我看了一下代码,发现在类的属性上我进行了@Autowired 注入。此处有提示:Field injection is not recommended,看来不建议使用属性注入。

     可以把这个注解去了添加lombok的Data注解和AllArgsConstructor注解,以通过对象构造时注入属性,这样也不会再报上面的提示了。

    打包编译时报错:Error:java: 无效的目标发行版: 11

    之前开发的时候我使用的是11,准备放到服务器上需要改成8,我已经改了project structer中的很多的地方为8、以及tomcat configuration中的JDK版本,但还需要修改file->setting->JAVA compiler中的target java 版本。

最后记一个我在运行springBoot的时候遇到一个错误,详细如下:

 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'company' defined in file [D:\javaidea\bootproject\target\classes\com\kermit\bootproject\pojo\Company.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.lang.String' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.lang.String' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

    提示没有找到NoSuchBeanDefinition  原因是springIOC容器加载bean默认使用无参构造进行初始化。因此需要加一个默认的无参构造方法即可。扩展一下:Spring实例化bean有四种方式:无参构造方法实例化(Spring默认)、静态工厂实例化、实例化工厂实例化、注解方式实例化。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值