Failed to define class com.hfx.keycloak.spi.ResetCredentialWithPhone in Module "deployment.phone.jar"
Closed this issue · 5 comments
Hello!
When I try to add this add-on, Keycloak gives error on startup:
Failed to define class com.hfx.keycloak.spi.ResetCredentialWithPhone in Module "deployment.phone.jar" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link com/hfx/keycloak/spi/ResetCredentialWithPhone (Module "deployment.phone.jar" from Service Module Loader): org/keycloak/authentication/authenticators/resetcred/ResetCredentialChooseUser
My set up:
- Keycloak from docker image
quay.io/keycloak/keycloak:13.0.0
- run
mvn package
from insidekeycloak-phone-authenticator
under latestmaven
docker image - copy file
keycloak-phone-authenticator/keycloak-phone-authenticator-1.0.0-SNAPSHOT.jar
to/opt/jboss/keycloak/standalone/deployments/phone.jar
- run Keycloak docker container
What could be the problem? Thanks in advance!
You cannot put your jar into the standalone/deployments
folder, it's called hot deployment. you need to register it using Modules. Or you can take at look at my example Dockerfile.
My example Dockerfile:
# base image
FROM jboss/keycloak:9.0.2
# copy the jars into the current folder
COPY --from=builder /app/keycloak-phone-authenticator/target/keycloak-phone-authenticator-1.0.0-SNAPSHOT.jar .
COPY --from=builder /app/keycloak-phone-authenticator-yuntongxun-sms/target/keycloak-phone-authenticator-yuntongxun-sms-1.0.0-SNAPSHOT.jar .
COPY --from=builder /app/yuntongxun4j/target/yuntongxun4j-1.0-SNAPSHOT.jar .
COPY examples/cli/ cli/
# register the jars
RUN $JBOSS_HOME/bin/jboss-cli.sh --file=cli/keycloak-phone-authenticator-yuntongxun-sms-config.cli
RUN $JBOSS_HOME/bin/jboss-cli.sh --file=cli/module-add.cli
# copy the resource files into the current folder
COPY --from=builder /app/keycloak-phone-authenticator/target/classes/theme-resources/templates/ $JBOSS_HOME/themes/base/login/
COPY ./messages/ messages/
# fix a bug
RUN rm -rf /opt/jboss/keycloak/standalone/configuration/standalone_xml_history/current
# register the resource files
RUN cat messages/messages_en.properties >> $JBOSS_HOME/themes/base/login/messages/messages_en.properties && \
cat messages/messages_zh_CN.properties >> $JBOSS_HOME/themes/base/login/messages/messages_zh_CN.properties && \
cat messages/messages_en.properties >> $JBOSS_HOME/themes/base/account/messages/messages_en.properties && \
cat messages/messages_zh_CN.properties >> $JBOSS_HOME/themes/base/account/messages/messages_zh_CN.properties
#6 is related to this and can answer your questions.
Thank you for the instant response!
Seems I managed to adapt Dockerfile to my Keycloak setup, but on user login page An internal server error has occurred
message shown and Keycloak outputs to console:
| 12:44:41,754 ERROR [freemarker.runtime] (default task-2) Error executing FreeMarker template: freemarker.core._MiscTemplateException: Macro "registrationLayout" has no parameter with name "displayWide".
|
| ----
| FTL stack trace ("~" means nesting-related):
| - Failed at: #macro registrationLayout bodyClass="... [in template "template.ftl" in macro "registrationLayout" at line 1, column 1]
| - Reached through: @layout.registrationLayout displayInf... [in template "login-with-phone.ftl" at line 2, column 1]
| ----
| at org.freemarker@2.3.29//freemarker.core.Environment.setMacroContextLocalsFromArguments(Environment.java:921)
| at org.freemarker@2.3.29//freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:854)
| at org.freemarker@2.3.29//freemarker.core.Environment.invokeMacro(Environment.java:809)
| at org.freemarker@2.3.29//freemarker.core.UnifiedCall.accept(UnifiedCall.java:83)
| at org.freemarker@2.3.29//freemarker.core.Environment.visit(Environment.java:331)
| ...
I have everything set up for version keycloak/keycloak:13.0.0
. Maybe keycloak-phone-authenticator
not supposed to work with version 13? Or I am doing something wrong? Thanks in advance.
I haven't tried this with Keycloak 13. When I tried to build keycloak 13.0.1 locally, I got some errors like this. Hmmm... I haven't fixed it, let me try it tomorrow.
Hi, I just released a new version to support Keycloak 13. Could you please test if it solves your problems? Let me know if anything wrong. thank you.
It worked! Thank you very much!