栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Error:(6, 32) java: package com.sun.jndi.toolkit.dir does not exist

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Error:(6, 32) java: package com.sun.jndi.toolkit.dir does not exist

目录
  • 项目场景 - 这是复(废)现(话)
  • 解决方案 - 跳过复(废)现(话)

项目环境:Maven、JDK 11 (其他版本的 JDK 也类似), MacOS (Windows 下 IDEA 配置界面可能会不同)

项目场景 - 这是复(废)现(话)

IDEA 导入一个已经存在的项目(替换为 demo 项目),被告知项目用的是 JDK 11。导入成功后,点击 File -> Project Structure,并将下面修改为 JDK 11。

搞定,,,运行代码(如此简单,脸上开始浮现笑容,内心美滋滋)。

然后就:

Information:java: Errors occurred while compiling module 'demo'
Information:javac 11.0.9 was used to compile java sources
Information:6/1/22, 10:59 AM - Build completed with 1 error and 0 warnings in 2 s 391 ms
# com.sun.jndi.toolkit.dir 这个包不存在
Error:(3, 32) java: package com.sun.jndi.toolkit.dir does not exist

脸上的笑容逐渐消失,内心开始骂骂咧咧。

点击报错,跳转后一看,代码里面用到了 import com.sun.jndi.toolkit.dir.SearchFilter 这个类:

package com.example.demo;

import com.sun.jndi.toolkit.dir.SearchFilter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

可是 com.sun.jndi.toolkit.dir 这个包在 JDK 11 中是存在的呀,为什么会找不到呢??

看到这直觉告诉我,肯定又是使用 JDK 的问题。。。因为之前已经写过一篇关于 JDK com.sun 包的文章,文章地址: Error:(16, 42) java: package com.sun.org.apache.regexp.internal does not exist 。

打开之前文章仔细对比后,发现这两者还是有区别的,之前写的 JDK 中确实已经移除相应的代码了,报错是正常的,(如果是这种情况,请看上面的文章);但是这次 JDK 中明明存在,但是最终也报错了,确实有些无从下手。但是正在大把大把抓头发时,再次仔细的看报错信息,忽然发现了一个切入点:Errors occurred while compiling module 'demo'

# 报错信息
Information:java: Errors occurred while compiling module 'demo'
Information:javac 11.0.9 was used to compile java sources
Information:6/1/22, 10:59 AM - Build completed with 1 error and 0 warnings in 2 s 391 ms
# com.sun.jndi.toolkit.dir 这个包不存在
Error:(3, 32) java: package com.sun.jndi.toolkit.dir does not exist

当编译这个 demo 模块是发生错误,看样子是在编译期间。然后去 IDEA 配置文件中去查看:


???这里的 Target bytecode version 怎么是 1.8 。。。然后去 pom.xml 看了一下:



    4.0.0
    ....
    demo
    
    
        1.8
    
	....
	
	
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                	
                    ${java.version}
                    ${java.version}
                
            
        
    

Maven 这里使用的是 JDK 1.8: 1.8 ,项目明明都要用 JDK 11 了,Maven 这里竟然没有改。。。 由此猜测:要么项目是 JDK 1.8 升级到 JDK 11,要么 pom.xml 配置文件是从之前 JDK 1.8 项目中复制过来的。

解决方案 - 跳过复(废)现(话)

通过上面的排查,大概率已经确认了问题所在。有的人也有可能觉着直接下面中选择 11 就可以,但是并不推荐,毕竟只对你本地的 IDEA 有效( For current proejct )。


看这里》》》》:所以最正确的方式,还是修改 pom.xml 文件,让其编译方式与项目所使用的的 JDK 对应起来,IDEA 中的 Target bytecode version 会自动匹配成 Maven 中的配置。



    4.0.0
    ....
    demo
    
    
        11
    
	....
	
	
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                	
                    ${java.version}
                    ${java.version}
                
            
        
    

折腾完成,又可以开心的撸代码了!!!

个人博客:Roc’s Blog

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949428.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号