由于以下原因导致的错误: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
每个模块都有parent
到mainapp
当我将父级从 keycloak
添加到 mainapp
pom.xml
时,我在 pom.xml
的其他模块中的 parent
到 mainapp
出现错误,例如:
生命周期配置未涵盖插件执行:
我也尝试将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
由于未捕获的异常“NSRangeException”而导致应用程序终止
SQL作业sql ssis作业错误:“由于错误0xC0010014导致程序包无法加载,这在CPackage :: LoadFROMXML失败时会发生