国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解決maven 父工程依賴傳遞導(dǎo)致的 java.lang.NoClassDefFoundError: org/elasticsearch/xcontent/ToXContentObject

這篇具有很好參考價值的文章主要介紹了解決maven 父工程依賴傳遞導(dǎo)致的 java.lang.NoClassDefFoundError: org/elasticsearch/xcontent/ToXContentObject。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

因為項目需要,最近在學(xué)習(xí)elasticsearch,在使用elasticsearch Java 客戶端時,出現(xiàn)了寫問題,主要就是報各種的 NoClassDefFoundError

如:java.lang.NoClassDefFoundError: org/elasticsearch/xcontent/ToXContentObject,出現(xiàn)這種 NoClassDefFoundError 的問題基本上就是maven 依賴錯誤或者版本不對,于是順著這個思路排查,摸到了問題所在。

案例描述

在嘗試使用 elasticsearch-rest-high-level-client 客戶端 7.17.4版本。

項目的依賴: elasticsearch-demo -> demo -> spring-boot-starter-parent :2.2.10.RELEASE

父工程demo的pom

<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>
	<packaging>pom</packaging>
   
    <modules>
		<module>elasticsearch-demo</module>
	</modules>
    
    <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.10.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
    <groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
		<!-- <elasticsearch.version>7.17.4</elasticsearch.version> -->
	</properties>
    
    <dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.elasticsearch.client</groupId>
				<artifactId>elasticsearch-rest-high-level-client</artifactId>
				<version>7.17.4</version>
				<!-- <version>${elasticsearch.version}</version> -->
			</dependency>
		</dependencies>
	</dependencyManagement>
    ........ 省略 ......
</project>
    

子工程elasticsearch-demo 的 pom

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>demo</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>elasticsearch-demo</artifactId>
    <groupId>com.example</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <name>elasticsearch-demo</name>
    
    <dependencies>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
        </dependency>
    </dependencies>
       ........ 省略 ......
</project>

使用案例

本以為按照如上配置,就能安心使用java客戶端進(jìn)行對elasticsearch的操作了,但是如下執(zhí)行會直接報錯 : java.lang.NoClassDefFoundError: org/elasticsearch/xcontent/ToXContentObject

/**
 * @author lvzb
 * @date 2022/12/05  13:53
 **/
@Slf4j
public class ElasticSearchTest {

    @Test
    void connectEs() throws IOException {

        RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
                new HttpHost("localhost", 9200, "http")
        ));

        GetIndexRequest request = new GetIndexRequest("index");
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        // 索引是否存在
        System.out.println(exists);
        client.close();
    }
}
java.lang.NoClassDefFoundError: org/elasticsearch/xcontent/ToXContentObject

	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	at com.example.redis.demo.config.ElasticSearchTest.connectEs(ElasticSearchTest.java:70)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
       ........ 省略 ......
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.xcontent.ToXContentObject
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 73 more

順著異常的類,在elasticsearch-demo的Dependencies中發(fā)現(xiàn)了問題所在 [idea右側(cè)菜單欄的Maven Dependencies ] 發(fā)現(xiàn)我的 org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.4下竟然存在一個 org.elasticsearch:elasticsearch:6.8.12

而且IDEA沒有任何報錯和依賴沖突的提示,這是為何?原來是demo 依賴的 父工程 spring-boot-starter-parent :2.2.10.RELEASE 他里面含有 org.elasticsearch:elasticsearch:6.8.12 被帶過來了,而且竟然直接將我們在 demo 顯示聲明的 7.17.4中含有的給替換了。

解決:在 demo 工程的 pom 中 聲明 elasticsearch.version,也就是上述案例代碼中的 注釋給打開,然后依賴?yán)镆迷摪姹咎柤纯?。注意:這里聲明版本的用詞要和 spring-boot-starter-parent 含有的依賴聲明的版本用詞要一致文章來源地址http://www.zghlxwxcb.cn/news/detail-400998.html

到了這里,關(guān)于解決maven 父工程依賴傳遞導(dǎo)致的 java.lang.NoClassDefFoundError: org/elasticsearch/xcontent/ToXContentObject的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 解決java.lang.NoClassDefFoundError錯誤

    在日常Java開發(fā)中,碰到j(luò)ava.lang.NoClassDefFoundError這樣的錯誤,需要花費很多時間去找錯誤的原因,具體是哪個類不見了?類明明還在,為什么找不到?而且我們很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException這兩個錯誤搞混,事實上這兩個錯誤是完全不同的。 我們往

    2024年02月11日
    瀏覽(18)
  • Java.lang.NoClassDefFoundError 的解決方法

    Java.lang.NoClassDefFoundError 的解決方法 Java開發(fā)過程中,經(jīng)常會遇到 java.lang.NoClassDefFoundError 錯誤。這個錯誤通常表示在運行時找不到所需的類。本文將探討這個問題的原因,并提供一些解決方案。 當(dāng)嘗試運行 Java 應(yīng)用程序時,可能會遇到以下錯誤消息: 該錯誤消息表明在運行時

    2024年02月08日
    瀏覽(25)
  • java.lang.NoClassDefFoundError異常的正確解決方法

    java.lang.NoClassDefFoundError 是 Java 運行時環(huán)境中的一個錯誤,表明 JVM 在運行時嘗試加載一個類的定義,但未能找到。這通常發(fā)生在編譯時該類是可用的,但在運行時 JVM 的類路徑(classpath)上卻找不到這個類。此錯誤不同于 ClassNotFoundException,后者通常在加載類時拋出,而 NoCl

    2024年04月25日
    瀏覽(54)
  • 解決 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 報錯

    解決 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 報錯

    在使用POI導(dǎo)出Excel表格的時候,本地運行導(dǎo)出沒問題,但是發(fā)布到服務(wù)器后提示 “java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader” 下面是pom.xml中的配置 一開始以為缺少jar包導(dǎo)致的,后來排查發(fā)現(xiàn)不是這個原因,是因為ooxml-schemas版本過低。對于poi 4.1.0和4.1.2來說,應(yīng)該使用

    2024年01月21日
    瀏覽(37)
  • java.lang.NoClassDefFoundError: org/springframework/aot/AotDetector解決方法

    java.lang.NoClassDefFoundError: org/springframework/aot/AotDetector解決方法

    今天在進(jìn)行尚硅谷尚籌網(wǎng)環(huán)境部署的時候,使用測試方法時總是提示java.lang.NoClassDefFoundError: org/springframework/aot/AotDetector這個錯誤,研究了好久沒找到問題在哪,百度搜了好多也沒找到方法,我用的是JDK17,突然想起沒有裝jre,所以試著把項目的JDK換成了JDK8,測試了一下好了

    2024年02月08日
    瀏覽(29)
  • 解決異常 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

    解決異常 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

    一、問題現(xiàn)象 用Tomcat啟動Web工程的時候,catalina.out 日志文件中報錯如下: 二、問題原因 服務(wù)器上的Java 的JDK版本是 11.0.4 ,版本過高。 JAXB API是java EE 的API,因此在Java SE 9.0 中不再包含這個 Jar 包。 Java 9 中引入了模塊的概念,默認(rèn)情況下,Java SE中將不再包含java EE 的Jar包。

    2024年02月07日
    瀏覽(18)
  • java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument問題排查解決

    java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument問題排查解決

    項目打包部署完成,用jar包在部署環(huán)境運行,在使用到poi相關(guān)的服務(wù)時報錯 java.lang.NoClassDefFoundError: org.apache.poi.POIXMLDocument 然后我查找了些解決辦法,對處理方法做了梳理: 使用XSSWorkbook,使用時出錯 pom文件少引入依賴 包依賴沖突 使用模塊沒有聲明所需依賴(這是我遇到的

    2024年02月06日
    瀏覽(25)
  • 解決java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter三更博客系統(tǒng)

    這個錯誤通常發(fā)生在使用JDK 9或更高版本的Java應(yīng)用程序中,因為在這些版本中,JDK已經(jīng)移除了JAXB默認(rèn)實現(xiàn)的某些部分。 要解決這個問題,您可以嘗試以下幾個步驟: 升級您的應(yīng)用程序以使用JAXB的最新實現(xiàn)??梢詮腗aven倉庫或JAXB的官方網(wǎng)站中獲取JAXB的最新版本。 1. 如果您使

    2024年02月15日
    瀏覽(37)
  • 解決`java.lang.NoClassDefFoundError`在Nacos和Spring Boot集成中的問題

    解決`java.lang.NoClassDefFoundError`在Nacos和Spring Boot集成中的問題

    ???? 博主貓頭虎 帶您 Go to New World.??? ?? 博客首頁——貓頭虎的博客?? ??《面試題大全專欄》 文章圖文并茂??生動形象??簡單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍專欄》學(xué)會IDEA常用操作,工作效率翻倍~?? ?? 《100天精通Golang(基礎(chǔ)入門篇)》學(xué)會Golang語言

    2024年02月11日
    瀏覽(28)
  • 解決報錯信息:java.lang.NoClassDefFoundError: org/springframework/beans/factory/aot/BeanRegistrationAotProc

    解決報錯信息:java.lang.NoClassDefFoundError: org/springframework/beans/factory/aot/BeanRegistrationAotProc

    ** java.lang.NoClassDefFoundError: org/springframework/beans/factory/aot/BeanRegistrationAotProcessor Exception in thread “main” java.lang.NoClassDefFoundError: org/springframework/beans/factory/aot/BeanRegistrationAotProcessor; Caused by: java.lang.ClassNotFoundException: org.springframework.beans.factory.aot.BeanRegistrationAotProcessor; java.lang.

    2024年02月15日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包