簡體   English   中英

java.lang.LinkageError: ClassCastException RuntimeDelegate.class

[英]java.lang.LinkageError: ClassCastException RuntimeDelegate.class

我有這個錯誤

java.lang.LinkageError: ClassCastException: attempting to tomcat-debug-eclispe/wtpwebapps/xwiki-debug-eclipse/WEB-INF/lib/jsr311-api-1.1.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to tomcat-debug-eclispe/lib/jboss-jaxrs-api_2.0_spec-1.0.1.Final.jar!/javax/ws/rs/ext/RuntimeDelegate.class

我正在使用一個名為xwiki https://github.com/xwiki/xwiki-platform 的開源 wiki 平台

這個平台在某處包含jsr311-api-1.1.1.jar並且需要它。

現在我想通過 XWiki 擴展連接一些 keycloak 功能,我需要這個

<!-- https://mvnrepository.com/artifact/org.keycloak/keycloak-admin-client --> <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-admin-client</artifactId> <version>4.3.0.Final</version> </dependency>

正如我們在這里看到的那樣 keycloak-admin-client 需要一些提供的依賴項,包括:

    <dependency>
        <groupId>org.jboss.spec.javax.ws.rs</groupId>
        <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
        <version>1.0.1.Final</version>
        <scope>provided</scope>
    </dependency>

所以從org.keycloak.admin.client.Keycloak我打電話

Keycloak.getInstance(keycloakUrl, keycloakRealm, keycloakUser, keycloakPwd, "admin-cli");

此時我正在運行的應用程序(因為一切運行良好)給了我上面的ClassCastException

這里更像是一個全局 jave ( JEE ) 問題,我不能提供更多代碼,因為最后您將無法構建 XWiki/Keycloak 運行環境並重現該問題(因為在 eclipse 中,通過單元測試,外部xwiki 環境沒有 ofc 沖突並且Keycloak.getInstance工作正常)。

在這種情況下我該怎么辦? 有沒有一種 Maven 方法可以避免這些沖突? 也許是一個要重新實現的類?

環境 :

tomcat 9.0.12
XWiki 10.6.1
Keycloak 4.3.0
Java 8

jsr311-api 被嵌入而不是僅僅作為一個提供的作用域依賴的原因是因為 JAX-RS API 不再包含在 Java 9 中(它在 Java 8 中)並且它是各種應用服務器的問題(沒有注意到 Tomcat 9 已經決定提供 JAX-RS API,但我想它是為了支持 Java 9)。 https://jira.xwiki.org/browse/XWIKI-14743

現在 XWiki 仍然基於(非常舊的)JAX-RS 1 的原因是 Restlet 基於 JAX-RS 1 而 JAX-RS 2 的復古兼容性不是那么好,所以當您嘗試運行時會出現各種問題安息吧。

如果您將 Tomcat 9 更改為 Tomcat 8,您將不再有啟動錯誤。 不幸的是,如果 keycloak 需要 JAX-RS 2,這並不容易。 也許舊版本的 keycloak 是基於 JAX-RS 1 的,但是不得不降級它確實不是很好。 我創建了https://jira.xwiki.org/browse/XWIKI-15588

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM