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

2023-05-16

目录

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

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

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

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 看了一下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    ....
    <name>demo</name>
    
    <properties>
        <java.version>1.8</java.version>
    </properties>
	....
	<!-- 有的分模块项目中可能存在下面的配置 -->
	<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                	<!-- 这里推荐使用 ${java.version},而不是硬编码 -->
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Maven 这里使用的是 JDK 1.8<java.version>1.8</java.version> ,项目明明都要用 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 中的配置。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    ....
    <name>demo</name>
    
    <properties>
        <java.version>11</java.version>
    </properties>
	....
	<!-- 有的分模块项目中可能存在下面的配置 -->
	<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                	<!-- 这里推荐使用 ${java.version},而不是硬编码 -->
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

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

个人博客:Roc’s Blog

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Error:(6, 32) java: package com.sun.jndi.toolkit.dir does not exist 的相关文章

随机推荐

  • Error: 0x8007019e

    安装和启动 旧版本的 win10 需要在 控制面板 gt 程序 gt 启用或关闭Windows功能 勾选 适用于Linux的Windows子系统 Beta 由于现在这个功能已经不再是 beta 功能了 xff0c 只要保证你的 window
  • docker下gitlab安装配置使用

    docker 安装gitlab以及使用 一 安装及配置 1 gitlab镜像拉取 gitlab ce为稳定版本 xff0c 后面不填写版本则默认pull最新latest版本 docker pull gitlab gitlab ce 拉取镜像
  • 解决VMware上字特别小的问题

    在安装了vmware tools后 xff0c 屏幕虽然变大了 xff0c 但是字还是特别小 解决方法如下 xff1a 1 找到虚拟机上设置按钮 2 选择设备按钮 3 调整分辨率 xff08 我的电脑一开始默认的分辨率特别高 xff0c 我
  • 每天修Linux系统---关于libjpeg.so.8 && 简单的安装opencv的方法

    问题如图 xff1a 为了修这个东西我真的是费尽心力 xff0c 天天念叨 xff0c 就差卸载opencv重装 重装之前试了一下结果世界都亮了哥 xff01 xff01 xff01 解决方案如图 xff1a cv2没有报错了 xff01
  • Ubuntu22.04应用程序启动时闪退

    Ubuntu22 04启动应用程序时闪退 xff0c 添加程序启动时参数解决 今天尝试在ubuntu安装QQ音乐 xff0c 安装后启动时弹出一下就闪退了 命令行启动程序 xff0c 报错 xff1a FATAL gpu data mana
  • CNN 不变性

    CNN的平移不变性 xff1a 由于全局共享权值和pool操作 xff08 明显的特征被保存下来 xff0c 与位置没有关系 xff1f xff09 CNN的尺度不变性 xff1a 没有或者说具有一定的不变性 xff08 尺度变化不大 xf
  • Docker(四):网络管理

    Docker网络管理 一 xff1a Docker网络介绍1 1 none 网络1 2 host 网络1 3 Container1 4 Bridge 二 xff1a 端口映射 一 xff1a Docker网络介绍 Docker使用了Linu
  • k8S之Centos离线安装

    文章目录 前言一 主要策略二 建立自主可控的仓库1 软件仓库2 镜像仓库 三 k8s安装步骤1 基础环境准备2 安装docker3 安装K8S组件4 初始化k8s主节点5 检查集群状态6 安装flannel网络插件7 添加worker节点
  • vue3实际开发中遇到的问题:setup遇到异步请求逻辑时结合async使用方法

    setup执行在 VUE实例的beforeCreate 与created 之前 函数抛出的逻辑内容包括数据和方法都已完成 setup引入的JS逻辑 span class token keyword export span span clas
  • socket TCP编程模型实例1

    功能需求 xff1a 将本地文件夹下的source文件通过TCP备份到远程服务器 运行环境 xff1a unbuntu 客户端代码 xff1a 1 include lt stdio h gt 2 include lt fcntl h gt
  • 【Python】paramiko模块安装报错的解决办法

    背景 xff1a 需要使用paramiko模块 xff0c 结果安装的时候就报错了 xff0c 折腾了很久 xff0c 决定记录 安装parmiko的步骤 xff1a 1 安装pycrypto xff1a 但是报错 xff0c 报错内容如下
  • SpringBoot 修改项目包名,启动项目提示:Error: Could not find or load main class xxx.xxx.xxxApplication

    近期要写一个架构相同的项目 xff0c 所以为了省事就将原有项目直接改了项目名以及项目的包名直接又是一套系统 xff0c 心里简直美滋滋 当一切就绪的时候 xff0c 开始运行项目 xff0c 然后控制台却报了一个错 xff1a Error
  • JDK 8 如何通过 LocalDate 计算两个日期相差的天数

    JDK 8 如何通过 LocalDate 计算两个日期相差的天数 1 获取总的日期间隔2 获取年月日单独的日期间隔3 注意事项 JDK 8 提供了新的日期类 LocalDate xff0c 通过 LocalDate 可以轻松的对日期进行操作
  • Docker 进入容器,并在容器内执行命令

    目录 1 语法 xff1a 1 1 OPTIONS 参数说明 xff1a 1 2 COMMAND 参数 xff1a 2 查看正在运行的容器3 使用 exec 进入容器4 推荐的配置 1 语法 xff1a docker exec OPTION
  • 可用的公开 RTSP/ RTMP 在线视频流资源地址

    最后更新时间 xff1a 2021年12月13日 xff08 不定期更新 xff09 最近在做海康视频的流媒体转码 xff0c 特收集几个可以访问的在线流媒体资源测试使用 xff1a RTSP rtsp wowzaec2demo strea
  • Centos 7 防火墙 firewalld 相关基础命令

    目录 1 安装 firewalld 防火墙2 firewalld 基本命令3 firewall cmd 基本命令 注 在 Centos7 下默认的防火墙变成了 firewalld xff0c 而不再是之前的 iptables xff0c 如
  • 在 MyBatis 中使用 <、<= 等特殊符号

    目录 1 直接Java 处理 xff08 不推荐 xff09 2 特殊符号转义3 硬核方法 xff1a xff1c CDATA xff1e 在实际的开发中 xff0c 经常会遇到一些场景 xff0c 比如查询小于某个时间 xff0c 或者是
  • 快速设置 Docker 的三种网络代理配置

    目录 Docker Client 代理访问远程的 Docker DaemonDocker Daemon 代理拉取或推送国外镜像Container 容器内部代理访问国外资源 通过代理访问网络是一个比较头疼的事情 xff0c 例如 xff1a
  • Ubuntu上配置GPU环境

    学习目标 xff1a Linux系统安装Anaconda3 xff1b Ubuntu上配置GPU显卡驱动 xff0c 安装显卡toolkit 创建虚拟环境 xff0c 安装深度学习框架 xff1b 掌握Linux系统下应用Anaconda3
  • Error:(6, 32) java: package com.sun.jndi.toolkit.dir does not exist

    目录 项目场景 这是复 废 现 话 解决方案 跳过复 废 现 话 项目环境 xff1a Maven JDK 11 xff08 其他版本的 JDK 也类似 xff09 MacOS Windows 下 IDEA 配置界面可能会不同 项目场景 这