我正在为 keycloak 编写一个身份验证器提供程序,我将其打包为.jar
. 一旦它使用来自 keycloak-services 的类,我就会得到一个NoClassDefFoundError
. 通过“ mvn wildfly:deploy
”部署提供程序时,我遇到了同样的错误。
我一定遗漏了一些东西,但我很少编写 Java 代码,而且我现在一无所知。
我在 pom.xml 中定义了依赖项,并尝试将 'provided' 和 'compile' 作为范围:
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<scope>provided</scope>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi</artifactId>
<scope>provided</scope>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi-private</artifactId>
<scope>provided</scope>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<scope>provided</scope>
<version>3.1.4.GA</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-services</artifactId>
<scope>provided</scope>
<version>${keycloak.version}</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
将以下代码添加到身份验证函数后,我立即收到错误消息:
AuthenticationSessionModel authSession = context.getAuthenticationSession();
SerializedBrokeredIdentityContext serializedCtx =
SerializedBrokeredIdentityContext.readFromAuthenticationSession(
authSession, "BROKERED_CONTEXT");
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
20:05:03,844 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-6) Uncaught server error: java.lang.NoClassDefFoundError: org/keycloak/authentication/authenticators/broker/util/SerializedBrokeredIdentityContext
Run Code Online (Sandbox Code Playgroud)
Chr*_*nne 16
由于wildfly 隔离了类加载器,我必须在META-INF/MANIFEST.MF 文件中声明依赖项。
为此,我将以下代码添加到我的 pom.xml 文件中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<Dependencies>org.keycloak.keycloak-services</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
(在keycloak用户列表中给了我解决方案:https ://lists.jboss.org/pipermail/keycloak-user/2019-September/019108.html )
归档时间: |
|
查看次数: |
2718 次 |
最近记录: |