maven编译找不到包com.sun.*
遭遇
早上合并代码,本地跑起来没有问题,部署到服务器,在服务器上进行编译的时候,一直提示错误
看到错误之后,首先我去对应的文件查看一下,发现所以的问题都是这个com.sun包下的,提示找不到。查找一下,这个是jdk下的rt.jar包里面。。。
官方解释:javac uses a special symbol table that does not include all Sun-proprietary classes. When javac is compiling code it doesn’t link against rt.jar by default. Instead it uses special symbol file lib/ct.sym with class stubs.大意是:javac在编译时,并不引用 rt.jar,用的是一个特别的symbol table(lib/ct.sym),这个symbol table不包含所有的sun包的类。
具体原因:J2SE中的类大致可以划分为以下的各个包:java.,javax.,org.,sun.;除了“sun”包,其它各个包都是Java平台的标准实现,并且今后也将被继续支持。一般说来,“sun”之类的包并不包含在Java平台的标准中,它与操作系统相关,在不同的操作系统(如Solaris,Windows,Linux,Mac等等)中的实现也各不相同,并且可能随着J2SE版本不定期变化。因此,直接调用“sun”包的程序代码并不是100%的Java实现。也就是说:“sun.*”包并不是API公开接口的一部分,调用“sun”包的程序并不能确保工作在所有Java平台上,事实上,这样的程序并不能工作在今后的Java平台上。
解决方式
我是通过下面这种方式解决的
<!--解决服务器编译无法加载到rt.jar包中com.sun.*--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding><compilerArgs><arg>-XDignore.symbol.file</arg></compilerArgs><fork>true</fork></configuration></plugin>
找了很多资料,有网友推荐以下方式
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>UTF-8</encoding><compilerArguments><bootclasspath>${java.home}/lib/rt.jar</bootclasspath></compilerArguments></configuration>
</plugin>
```java
这种方式我也试过,但是我放到服务器上之后,会出现新的问题,我这边会提示maven的版本有问题,折腾了半天没弄好,你们可以试试
[参考文章](https://blog.csdn.net/am_Sun/article/details/106374866):
maven编译找不到包com.sun.*相关推荐
- go编译找不到包golang.org/x/net
go编译找不到包golang.org/x/net 运行环境 编译发生错误 问题原因 解决办法 运行环境 go 版本:go version go1.14.4 windows/amd64 使用包:net/ ...
- maven编译不通过:软件包com.sun.org.apache.xml.internal.security.utils.Base64 不存在
问题:代码中使用了sun公司的第三方私有库,导致编译不通过 maven打包异常:软件包com.sun.org.apache.xml.internal.security.utils.Base64 不存 ...
- java11 使用ParameterizedTypeImpl 程序包sun.reflect.generics.reflectiveObjects不存在 maven编译失败
项目场景: 项目需要一个从接口获取数据集合的sdk,数据集合里面的元素类型会有多种,但是顶层的数据结构一样的,算是一种比较常见的使用方式: {"total": 1234," ...
- Linux 没有主清单属性,maven编译正常,运行报错:中没有主清单属性
在pom.xml添加插件 org.apache.maven.plugins maven-shade-plugin 1.2.1 package shade com.xxx.spider.Main 执行命 ...
- Maven compile 编译后Error:(8,31) java: 程序包com.sun.istack.internal不存在 Error:(318,57) java: 找不到符号的解决办法
是因为代码里使用了 sun 私有包中 @NotNull注解导致,只要引入相应的sun私有包就行了!! 网上看到的解决办法:如下 KmService.java:[4,30] 错误: 程序包com.sun ...
- Gradle/Maven编译时找不到com.sun包的原因与解决方法
错误: 程序包com.sun.xml.internal.bind.marshaller不存在 import com.sun.xml.internal.bind.marshaller.Namespace ...
- javac编译错误: 程序包 com.sun.xxx 不存在
文章目录 运行环境 一.问题描述 二.探究过程 三.原因 四.解决方式 五.总结 六.参考链接 运行环境 Java版本:java version "1.8.0_281" 操作系统: ...
- 既使用maven编译,又使用lib下的Jar包
既使用maven编译,又使用lib下的Jar包 在项目开发中,项目用maven管理,是一个maven项目. 一般情况下jar包都可以使用pom.xml来配置管理,但也有一些时候,我们项目中使用了一个 ...
- Jenkins部署maven项目找不到jar包解决
Jenkins部署maven项目找不到jar包解决 环境部署 问题描述 解决方案 环境部署 1. centos搭建java部署环境 2. jenkins环境搭建 3. jenkins部署springb ...
最新文章
- Python gui编程pyQt5安装步骤
- 答网友提问,ABAP post调用外部接口遇到405 not allow
- ASP.NET Core开发-Docker部署运行
- springboot:BeanPostProcessor示例及分析
- transform限制position:fixed的跟随效果
- do while的使用
- 一生都学不完的计谋(经典)
- error: member “torch::jit::ProfileOptionalOp::Kind“ may not be initialized
- 哈佛有只”精灵球“,唯有它能温柔收放深海的软体精灵 |Science Robotics
- with(nolock)解释
- 软件测试工作中的沟通问题
- AssionShop开源B2C电子商务系统-概述(转载)
- Android自定义View,画一个好看带延长线的饼状图
- html怎么制作小黄人,教你如何自己动手制作小黄人模型攻略
- windows查看系统运行时间和cmd命令大全
- matlab中integrator,matlab:Simulink Integrator的理解
- 【虚幻引擎】UE4/UE5科大讯飞文字合成语音
- 如何在HTML网页里添加CSS边框,css如何设置边框?
- 新浪微博 (sso package or sign error)
- 测试面试题整理(2022.02.28)
热门文章
- java毕设项目酒店管理系统(附源码)
- java timertask 销毁_java中TimerTask 如何才能停止呢
- 电脑花屏不一定是显卡问题
- git cherry-pick 将另一个分支的某个提交拉取到当前分支(也叫做遴选),在命令窗口和sourcetree中的使用
- 算法面试之Roberta、Albert
- 属性名有中横线要如何获取
- -webkit-flex 属性
- KIEl的kengen获取方法
- 万豪因数据泄露被罚款1840万英镑
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)个人解题报告