# NoClassDefFoundError from Maven deploy when attempting to create a custom authenticator provider for Keycloak

**URL:** <https://forum.keycloak.org/t/noclassdeffounderror-from-maven-deploy-when-attempting-to-create-a-custom-authenticator-provider-for-keycloak/6791>\
**Category:** Getting advice\
**Created:** [January 14, 2021, 7:18am UTC](https://forum.keycloak.org/t/noclassdeffounderror-from-maven-deploy-when-attempting-to-create-a-custom-authenticator-provider-for-keycloak/6791 "2021-01-14T07:18:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![kenn.baker](https://avatars.discourse-cdn.com/v4/letter/k/76d3ee/32.png) [@kenn.baker](https://forum.keycloak.org/u/kenn.baker)\
**Post date:** [January 14, 2021, 7:18am UTC](https://forum.keycloak.org/t/noclassdeffounderror-from-maven-deploy-when-attempting-to-create-a-custom-authenticator-provider-for-keycloak/6791/1 "2021-01-14T07:18:46Z")

</div>

I’m implementing a Keycloak authentication provider (for Keycloak 6.0.1) which returns a message when a user is temporarily locked (like specified at [Keycloak Custom message on user temporary lock](https://stackoverflow.com/questions/57112945/keycloak-custom-message-on-user-temporary-lock#answer-61223715))

When I do `mvn clean install wildfly:deploy` I get :

```auto
[ERROR] Caused by: java.util.ServiceConfigurationError: org.keycloak.authentication.AuthenticatorFactory: Provider com.mumba.cloud.authenticator.LockedUserAuthenticatorFactory could not be instantiated
[ERROR] Caused by: java.lang.NoClassDefFoundError: Failed to link com/mumba/cloud/authenticator/LockedUserAuthenticator (Module \"deployment.lockeduser-authenticator-1.0-SNAPSHOT.jar\" from Service Module Loader): org/keycloak/authentication/authenticators/browser/UsernamePasswordForm"}}}}

```

I’m looking for some help on how to track down why I’m getting the java.lang.NoClassDefFoundError and why Maven (or maybe it’s wildfly) can’t seem to find org/keycloak/authentication/authenticators/browser/UsernamePasswordForm

It isn’t a compile-time error, and I believe my import statement below is correct for UsernamePasswordForm (see code below).

I also think I have correctly added the dependency (keycloak-services) to my pom.xml (see below).

I’m very new to Maven (and Java/Keycloak development), so I’m not sure where to dig to track this down.

Anyone have any pointers?

```auto
package com.mumba.cloud.authenticator;

import org.keycloak.authentication.authenticators.browser.UsernamePasswordForm;

public class LockedUserAuthenticator extends UsernamePasswordForm {
    @Override
    protected String tempDisabledError() {
        return "ACCOUNT IS temporarily disabled.";
    }
}

```

My pom.xml includes :

```auto
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <keycloak-version>6.0.1</keycloak-version>
        <maven.test.skip>true</maven.test.skip>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-core</artifactId>
            <version>${keycloak-version}</version>
        </dependency>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-services</artifactId>
            <version>${keycloak-version}</version>
        </dependency>
...

```

[java](https://stackoverflow.com/questions/tagged/java) [maven](https://stackoverflow.com/questions/tagged/maven) [wildfly](https://stackoverflow.com/questions/tagged/wildfly)

---

<div class="post-metadata">

**Author:** ![xgp](https://yyz2.discourse-cdn.com/free1/user_avatar/forum.keycloak.org/xgp/32/2589_2.png) [@xgp](https://forum.keycloak.org/u/xgp)\
**Post date:** [January 14, 2021, 10:08am UTC](https://forum.keycloak.org/t/noclassdeffounderror-from-maven-deploy-when-attempting-to-create-a-custom-authenticator-provider-for-keycloak/6791/2 "2021-01-14T10:08:14Z")

</div>

replied in the mailing list: [Google Groups](https://groups.google.com/forum/#!msg/keycloak-user/5TJxwwnR53o/HqtLsCyFCwAJ)

tl;dr you need to have a manifest in your jar that says which keycloak modules you depend on

---

<div class="post-metadata">

**Author:** ![kenn.baker](https://avatars.discourse-cdn.com/v4/letter/k/76d3ee/32.png) [@kenn.baker](https://forum.keycloak.org/u/kenn.baker)\
**Post date:** [January 18, 2021, 12:07am UTC](https://forum.keycloak.org/t/noclassdeffounderror-from-maven-deploy-when-attempting-to-create-a-custom-authenticator-provider-for-keycloak/6791/3 "2021-01-18T00:07:48Z")

</div>

Thanks heaps.

In case it helps someone else, I ended up with the following, which worked for my situation:

```
            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
                <archive>
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                    </manifest>
                    <manifestEntries>
                        <Class-Path>lib/</Class-Path>
                        <Dependencies>org.keycloak.keycloak-services</Dependencies>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
```
