sun.misc包找不到的解决方法

文章详细介绍了如何解决Eclipse中默认认为JRE system library库中不存在sun开头包的问题,提供了重新加载JRE库和忽略相关错误/警告两种解决方案。

jdk有不同的厂商,jdk标准库中是没有sun开头的包,所以eclipse中默认认为jre system library库中没有这类包,但大部分人使用的都是sun/oracle的jdk,是可以使用sun开头的包的,所以只要让eclipse通过编译就行。

解决方法1:重新加载jre库

:

解决方法2:忽略关于jre的error/warning


Java 开发中,如果你遇到如下错误: ``` 不到符号 symbol: class BASE64Encoder location: package sun.misc ``` 这是因为你使用了 `sun.misc.BASE64Encoder`,它属于 **JDK 内部 API**,并是标准的 Java API,因此推荐使用。而且从 **Java 9 开始,这些内部类已经被模块系统(JPMS)封装,默认可见**,所以编译时会报错。 --- ### ✅ 推荐解决方案:使用标准的 Base64 编码方式 #### ✔ 方法一:使用 Java 8+ 标准库中的 `java.util.Base64` 这是最推荐的做法,适用于 Java 8 及以上版本。 ```java import java.util.Base64; public class Base64Example { public static void main(String[] args) { String originalInput = "Hello, world!"; String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes()); System.out.println("Encoded: " + encodedString); byte[] decodedBytes = Base64.getDecoder().decode(encodedString); String decodedString = new String(decodedBytes); System.out.println("Decoded: " + decodedString); } } ``` 这段代码使用了 Java 自带的标准 Base64 编解码器,需要任何第三方依赖。 --- #### ✔ 方法二:使用 Apache Commons Codec(第三方库) 如果你需要兼容旧项目或者需要更灵活的功能,可以引入 [Apache Commons Codec](https://commons.apache.org/proper/commons-codec/)。 添加 Maven 依赖: ```xml <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.15</version> </dependency> ``` 使用示例: ```java import org.apache.commons.codec.binary.Base64; public class Base64ApacheExample { public static void main(String[] args) { String input = "Hello, world!"; byte[] encodedBytes = Base64.encodeBase64(input.getBytes()); System.out.println("Encoded: " + new String(encodedBytes)); byte[] decodedBytes = Base64.decodeBase64(encodedBytes); System.out.println("Decoded: " + new String(decodedBytes)); } } ``` --- #### ❌ 推荐的方式:强行使用 `sun.misc.BASE64Encoder` 虽然可以通过添加 JVM 参数来访问 JDK 内部类(比如使用 `--add-exports`),但这是长期解决方案,也安全、推荐。 例如(仅作了解): ```bash javac --add-exports java.base/sun.misc=ALL-UNNAMED YourClass.java ``` --- ### 总结 | 方式 | 是否推荐 | 特点 | |------|----------|------| | `sun.misc.BASE64Encoder` | ❌ 推荐 | 非标准、已隐藏、安全 | | `java.util.Base64` | ✅ 强烈推荐 | Java 8+ 自带,无需依赖 | | Apache Commons Codec | ✅ 推荐 | 功能丰富,兼容性好 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值