Maven Dependency Scopes

使用 jol-core 打印对象头的信息

pom.xml

<dependencies><dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.14</version><scope>provided</scope></dependency>
</dependencies>
public class BiasedLocking {static class MyThread extends Thread {static final Object lock = new Object();@Overridepublic void run() {for (int i = 0; i < 3; i++) {synchronized (lock) {// 打印锁对象的布局System.out.println(ClassLayout.parseInstance(lock).toPrintable());}}}}public static void main(String[] args) {MyThread mt = new MyThread();mt.start();}
}

异常信息

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/openjdk/jol/info/ClassLayoutat test.syn.BiasedLocking$MyThread.run(BiasedLocking.java:22)
Caused by: java.lang.ClassNotFoundException: org.openjdk.jol.info.ClassLayoutat java.net.URLClassLoader.findClass(URLClassLoader.java:382)at java.lang.ClassLoader.loadClass(ClassLoader.java:418)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)at java.lang.ClassLoader.loadClass(ClassLoader.java:351)... 1 more

原因

scope=provided的情况,则可以认为这个provided是目标容器已经provide这个jar。换句话说,它只影响到编译,测试阶段。而在运行阶段,假定目标的容器(比如我们这里的tomcat容器)已经提供了这个jar包,app可以直接使用容器提供的jar,所以无需我们打包对应的jar包了。

相当于,运行时不会找 provided 修饰的依赖。

解决

移除 <scope>provided</scope> 即可,使用默认的 scope=compile

对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个jar包在classpath中。

java.lang.NoClassDefFoundError: org/openjdk/jol/info/ClassLayout相关推荐

  1. NoClassDefFoundError: org/openjdk/jol/info/ClassLayout

    NoClassDefFoundError: org/openjdk/jol/info/ClassLayout 版本: 案发现场: 解决方案: 选择合适的jar包 将Jar包放到项目中 新建一个lib文 ...

  2. 如何解决java.lang.NoClassDefFoundError:Java 9中的javax / xml / bind / JAXBException

    本文翻译自:How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9 I have s ...

  3. java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

    今天执行 flutter doctor -v 的时候发现一个问题,提示信息是 [!] Android toolchain - develop for Android devices (Android ...

  4. java.lang.NoClassDefFoundError: javax/activation/DataSource

    文章目录 1.降低JDK版本 2.添加某些用户使用 mailR 包所需的 jar 文件 3.总结 1.降低JDK版本 我之前安装了Java8的笔记本电脑上工作正常, 我刚刚得到了一台全新的台式电脑,安 ...

  5. maven命令行创建web项目报错:java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils...

    早上新建一个web项目,没想到一敲命令创建就失败了,真是出师不利.各种折腾无果,当然我也可以用eclipse直接创建的,就是想搞清楚状况.刚刚才发现问题原因,这个结果我也是醉了,太坑爹了. 问题现象: ...

  6. SpringBoot 项目tomcat插件启动报错 java.lang.NoClassDefFoundError: javax/el/ELManager

    问题描述: SpringBoot项目 tomcat插件启动出现下面的问题: ERROR 2021-04-07 08:42:03,129 org.springframework.boot.SpringA ...

  7. Caused by: java.lang.NoClassDefFoundError: redis/clients/util/Pool

    严重: Exception sending context initialized event to listener instance of class org.springframework.we ...

  8. exception in thread main java.lang.noclassdeffounderror wrong name

    不含包层次的HelloWorld.java public class HelloWorld{ public static void main(String[] args) { System.out.p ...

  9. DRP问题集结(一)-Tomcat无法启动,报错java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory...

    问题一:  Tomcat无法启动,报错java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory 问题二:[Error]Jav ...

最新文章

  1. 3年5000家,苏宁小店如何立足“中国第一O2O社区小店”?
  2. 用python写脚本看什么书-你用 Python 写过哪些有趣的脚本?
  3. Greys Java在线问题诊断工具
  4. 中小学计算机教室设备维修记录,多媒体电教室的管理与设备的维护
  5. wget: unable to resolve host address “mirrors.163.com” 的解决办法
  6. [译] APT分析报告:04.Kraken - 新型无文件APT攻击利用Windows错误报告服务逃避检测
  7. @data注解不生效_面试官:你经常在SpringBoot中使用的条件注解底层是如何实现的?你了解过吗?...
  8. fasttext 文本分类_一文综述经典的深度文本分类方法
  9. 公开说说别人看不到_当听到别人在说自己坏话时,心里是什么感受?
  10. Java基础---常用类之Arrays工具类+基本类型的包装类
  11. C# Struct的内存布局
  12. 虚拟机不能上网以及无法ping通百度的解决方案
  13. adoption/adaption
  14. 华为路由器OSPF基础配置命令
  15. ps图标长投影如何做?
  16. MyEclipse详解
  17. 阿里、百度、搜狐等公司社招面试记录与总结
  18. 记——博客后台管理系统
  19. kali虚拟机网络配置
  20. 什么是分布式事务Seata?Seata的几种事务模式详解

热门文章

  1. javaScript解决浏览器兼容问题,判断浏览器是ie或者Chrome
  2. 查看或修改mysql数据库及表编码格式
  3. C# winform设置开机启动
  4. java xmap_使用XMAP完成JavaBean和XML之间转换
  5. 【论文写作】LaTeX排版工具 | 写给初学者的一篇容易上手的文档
  6. 计算机PPT中项目编号怎么弄,电脑技巧收藏家电脑基础设置幻灯片格式:项目符号和编号...
  7. 学习笔记:使用endnotesX9插入参考文献
  8. spring加载xsd文件
  9. VSCode全配置(c++、unity、html...等配置和好用设置,持续更新)
  10. 数据模型建设-维度建模详解