简体   繁体   English

NoClassDefFoundError:org/keycloak/KeycloakPrincipal

[英]NoClassDefFoundError: org/keycloak/KeycloakPrincipal

I am getting following exception while deploying ear in WildFly 10. Apapter is installed so no jars included in ear & no dependencies set.在 WildFly 10 中部署 ear 时出现以下异常。已安装 Apapter,因此 ear 中没有包含 jars,也没有设置依赖项。

Caused by: java.lang.NoClassDefFoundError: org/keycloak/KeycloakPrincipal Caused by: java.lang.ClassNotFoundException: org.keycloak.KeycloakPrincipal from [Module \"deployment.app.ear.appEJB.jar:main\" from Service Module Loader]"}, "WFLYCTL0412: Required services that are not installed:" => [ "jboss.undertow.deployment.default-server.default-host./App" ]引起:java.lang.NoClassDefFoundError:org/keycloak/KeycloakPrincipal 引起:java.lang.ClassNotFoundException:org.keycloak.KeycloakPrincipal 来自 [Module \"deployment.app.ear.appEJB.jar:main\" from Service Module Loader ]"}, "WFLYCTL0412: 未安装的必需服务:" => [ "jboss.undertow.deployment.default-server.default-host./App" ]

This issue comes only for classes in appEJB.jar.此问题仅针对 appEJB.jar 中的类。 The classes in appWEB.war has no dependency issue. appWEB.war 中的类没有依赖性问题。 Here is my subsystem conf:这是我的子系统配置文件:

             <subsystem xmlns="urn:jboss:domain:keycloak:1.1">
                <secure-deployment name="appWEB.war">
                    <realm>demo</realm>
                    <resource>app</resource>
                    <use-resource-role-mappings>true</use-resource-role-mappings>
                    <public-client>true</public-client>
                    <auth-server-url>http://localhost:8180/auth</auth-server-url>
                    <ssl-required>EXTERNAL</ssl-required>
                    <principal-attribute>preferred_username</principal-attribute>
                </secure-deployment>
            </subsystem>

Is there any other way to configure ear deployment in subsystem so that ejb.jar also get Keycloak libraries implicitly?有没有其他方法可以在子系统中配置 ear 部署,以便 ejb.jar 也隐式获取 Keycloak 库?

Issue fixed when I set Keycloak modules dependency for ejb.jar in jboss deployment descriptor.当我在 jboss 部署描述符中为 ejb.jar 设置 Keycloak 模块依赖项时已解决问题。

<module name="org.keycloak.keycloak-adapter-spi"/>
<module name="org.keycloak.keycloak-adapter-core"/>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-core"/>

Create MANIFEST.MF in the META-INF path for the ejb.jar project.ejb.jar项目的 META-INF 路径中创建MANIFEST.MF Write in the file content:写入文件内容:

Manifest-Version: 1.0
Dependencies: org.keycloak.keycloak-adapter-spi, org.keycloak.keycloak-adapter-core, org.keycloak.keycloak-common, org.keycloak.keycloak-core

I had the same error type developing an Authenticator for 16.1.0 the specific error being:我在为 16.1.0 开发Authenticator时遇到了相同的错误类型,具体错误是:

Caused by: java.lang.ClassNotFoundException: org.keycloak.services.util.CookieHelper from [Module "deployment.my-authenticator-1.0-SNAPSHOT.jar" from Service Module Loader]引起:java.lang.ClassNotFoundException:org.keycloak.services.util.CookieHelper 来自 [Module "deployment.my-authenticator-1.0-SNAPSHOT.jar" from Service Module Loader]

The solution was @valsaraj-viswanathan answer .解决方案是@valsaraj-viswanathan answer However, I wanted to expand on how to set that.但是,我想扩展如何设置它。

In myAuthenticator/src/main/resources/META-INF/jboss-deployment-structure.xml I added the following content:myAuthenticator/src/main/resources/META-INF/jboss-deployment-structure.xml我添加了以下内容:

<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module
                    name="org.keycloak.keycloak-core"
                    export="true" />
            <module
                    name="org.keycloak.keycloak-server-spi"
                    export="true" />
            <module
                    name="org.keycloak.keycloak-server-spi-private"
                    export="true" />
            <module
                    name="org.keycloak.keycloak-services"
                    export="true" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 带有 Tomcat 的 Keycloak:org.keycloak.KeycloakPrincipal 不能转换为 org.keycloak.KeycloakPrincipal - Keycloak with Tomcat: org.keycloak.KeycloakPrincipal cannot be cast to org.keycloak.KeycloakPrincipal Keycloak 将自定义属性检索到 KeycloakPrincipal - Keycloak retrieve custom attributes to KeycloakPrincipal 使用 org.keycloak.authentication.authenticators.broker.util 中的类时,提供程序 jar 中的 NoClassDefFoundError - NoClassDefFoundError in a provider jar when using a class from org.keycloak.authentication.authenticators.broker.util 无法加载模块org.keycloak.keycloak-server-subsystem - Failed to load module org.keycloak.keycloak-server-subsystem java.lang.NoClassDefFoundError:来自 Keycloak 的 java/security/acl/Group - java.lang.NoClassDefFoundError: java/security/acl/Group from Keycloak 从KeycloakPrincipal获取用户语言环境 - Getting user locale from KeycloakPrincipal 无法在 WebFilter 中将 Principal 强制转换为 KeycloakPrincipal 但 servlet 没有问题 - Can not cast Principal to KeycloakPrincipal in a WebFilter but no problem with servlet 密钥斗篷错误:[org.pac4j.oidc.credentials.authenticator.OidcAuthenticator] - Keycloak error : [org.pac4j.oidc.credentials.authenticator.OidcAuthenticator] Keycloak 17:类型 org.keycloak.models.KeycloakSession 和限定符 [@Default] 的不满足依赖性 - Keycloak 17: Unsatisfied dependency for type org.keycloak.models.KeycloakSession and qualifiers [@Default] 未能自省类 [org.keycloak.adapters.springboot.KeycloakAutoConfiguration] - Failed to introspect Class [org.keycloak.adapters.springboot.KeycloakAutoConfiguration]
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM