由于以下原因导致的错误:java.lang.ClassNotFoundException Keycloak

Posted

技术标签:

【中文标题】由于以下原因导致的错误:java.lang.ClassNotFoundException Keycloak【英文标题】:error due to the following reason(s): java.lang.ClassNotFoundException Keycloak 【发布时间】:2015-08-15 18:57:39 【问题描述】:

我在使用 Keycloak 部署应用时遇到问题:

部署错误: 由于以下原因,部署“vfs:///D:/jboss-6.1.0.Final/jboss-6.1.0.Final/server/default/deploy/keycloak-demo-ear.ear”出错( s): java.lang.ClassNotFoundException: javax.faces.component.UIComponent from BaseClassLoader@6929c1c6vfs:///D:/jboss-6.1.0.Final/jboss-6.1.0.Final/server/default/deploy /keycloak-demo-ear.ear

或者这个:

部署出错:部署 “vfs:///D:/jboss-6.1.0.Final/jboss-6.1.0.Final/server/default/deploy/keycloak-demo.ear”由于以下原因而出错: org.jboss.deployers.spi.DeploymentException: URL file:/D:/jboss-6.1.0.Final/jboss-6.1.0.Final/server/default/deploy/keycloak-demo-ear.ear/keycloak-demo-web.war/部署失败

将以下代码添加到web.xml时出现错误

<login-config>
    <auth-method>KEYCLOAK</auth-method>
    <realm-name>demo</realm-name>
</login-config>

我从管理控制台在WEB-INF 中创建了keycloak.json,例如:


  "realm": "demo",
  "realm-public-key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB",
  "auth-server-url": "http://localhost:8080/auth",
  "ssl-required": "external",
  "resource": "panel",
  "credentials": 
    "secret": "6c3fa646-f033-4864-8b87-604887ce8eec"
  

我将Keycloak配置从redme文件添加到standalone/configuration/standalone.xml:

适用于 WildFly 和 JBoss EAP 6.x

<extensions>
    <extension module="org.keycloak.keycloak-subsystem"/>
    ...
</extensions>

<profile>
    <subsystem xmlns="urn:jboss:domain:keycloak:1.0">
        <auth-server name="main-auth-server">
            <enabled>true</enabled>
            <web-context>auth</web-context>
        </auth-server>
    </subsystem>
    ...
</profile>

我正在使用这个 keycloak (keycloak-appliance-dist-all-1.1.0.Final) http://sourceforge.net/projects/keycloak/files/1.1.0.Final/keycloak-appliance-dist-all-1.1.0.Final.zip/download

我从包中成功部署了示例 keycloak 1.1.0,并希望在我的应用程序中使用 keycloak。我做错了什么?

编辑:

我想我找到了导致问题的元素:

<parent>
    <artifactId>keycloak-parent</artifactId>
    <groupId>org.keycloak</groupId>
    <version>1.1.0.Final</version>
    <relativePath>../../../pom.xml</relativePath>
</parent>

当我从示例项目中删除此 parent 时,它停止工作

我的应用结构是

主应用程序 ... pom.xml ...模块1 ... pom.xml ...模块2 ... pom.xml ...模块3 ... pom.xml

每个模块都有parentmainapp

当我将父级从 keycloak 添加到 mainapp pom.xml 时,我在 pom.xml 的其他模块中的 parentmainapp 出现错误,例如:

生命周期配置未涵盖插件执行:

我也尝试将dependency 添加到keycloak-parent,但 id 仍然不起作用

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

为了让您的应用使用 keycloak,您必须在您的服务器上安装一个适配器。以下是详细信息: https://docs.jboss.org/keycloak/docs/1.1.0.Final/userguide/html/ch08.html

您可以在您的 WEB-INF/ 中部署 keycloak 子系统或 keycloak.json 文件。这两种情况都必须安装适配器 问候

【讨论】:

链接已损坏,请改用keycloak.github.io/docs/userguide/keycloak-server/html/…【参考方案2】:

Keycloak 由一个服务器(Keycloak 服务器)和一个适配器组成,该适配器保护您的应用程序并处理身份验证。如果您将自己的应用程序部署在与 Keycloak 服务器相同的服务器中,则需要将 Keycloak 适配器添加到服务器,如前所述(请参阅Keycloak adapters)。最新版本的 Keycloak 作为预配置的 Wildfly 9 提供,因此可能适合您的应用程序。还有其他容器或纯 HTML 客户端的适配器。

根据您的问题,我猜您正在尝试将 Keycloak 示例修改为您自己的应用程序。 Keycloak 示例使用共享的父 POM,因此它可能希望将其剥离为单个 POM 以获得更好的概览。或者,根据您的专业知识,您可以从具有 JAAS 安全性的基本 JEE 应用程序开始,并将其部署到 Keycloak 服务器(安装了 JBoss/Wildfly 适配器)。参见例如Oracle's JEE 6 Tutorial.

【讨论】:

以上是关于由于以下原因导致的错误:java.lang.ClassNotFoundException Keycloak的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spark SQL 时无法将获取 B 转换为 java.lang.String

IOS 错误原因

wpfwindow.show字体不显示

由于未捕获的异常“NSRangeException”而导致应用程序终止

Oracle中可能导致以下错误的可能原因是什么?

SQL作业sql ssis作业错误:“由于错误0xC0010014导致程序包无法加载,这在CPackage :: LoadFROMXML失败时会发生