本地執行maven工程報錯: java.lang.NoClassDefFoundError

環境

IDEA Ultimate 2018.3
MAVEN 3.5.4

背景

在使用Maven工程的時候,IDEA環境下本地執行代碼報錯:

Exception in thread "pcMetricsThread" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
	at com.ucar.spacex.metrics.impl.MetricsSystemImpl.<clinit>(MetricsSystemImpl.java:35)
	at com.ucar.spacex.metrics.lib.DefaultMetricsSystem.<init>(DefaultMetricsSystem.java:23)
	at com.ucar.spacex.metrics.lib.DefaultMetricsSystem.<clinit>(DefaultMetricsSystem.java:21)
	at com.ucar.spacex.metrics.source.JvmMetrics$Singleton.init(JvmMetrics.java:33)
	at com.ucar.spacex.metrics.source.JvmMetrics.initSingleton(JvmMetrics.java:91)
	at com.ucar.spacex.metrics.CommonMetricsSystem.lambda$main$0(CommonMetricsSystem.java:16)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 7 more

分析

根據報錯可知找不到類,但是我們的pom.xml文件明明配置了對應的jar包。

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

根據maven的官方文檔可知scope的範圍爲provided時,第三方jar包是會參與代碼的編譯,所以本地執行代碼應該是可以找到對應的類的,所以問題肯定是出現在IDEA本身,發現應該在執行的時候選中下列的選項,再次執行成功。
在這裏插入圖片描述

參考鏈接

1、https://blog.csdn.net/lh11077/article/details/80143996

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章