Keycloak Twilio NoClassDefFoundError

Keycloak Twilio NoClassDefFoundError

我正在尝试将 Twilio 与 Keycloak 一起使用,但是我遇到了这个错误:

14:47:58,803 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-1) Uncaught server error: java.lang.NoClassDefFoundError: com/twilio/Twilio
    at deployment.keycloakauthenticator-1.0-SNAPSHOT.jar//com.gitlab.name.keycloakauthenticator.rest.TwilioProvider.<init>(TwilioProvider.java:13)
    at deployment.keycloakauthenticator-1.0-SNAPSHOT.jar//com.gitlab.name.keycloakauthenticator.PhoneVerificationRestProvider.getResource(PhoneVerificationRestProvider.java:17)
    at org.keycloak.keycloak-services@13.0.1//org.keycloak.services.resources.RealmsResource.resolveRealmExtension(RealmsResource.java:283)

....

这是我使用 Twilio 的 pom:

        <dependency>
            <groupId>com.twilio.sdk</groupId>
            <artifactId>twilio</artifactId>
            <version>8.14.0</version>
        </dependency>

更新:

我试图将它添加到 jar 插件中,但我遇到了这个不是很有用的错误:

15:16:03,106 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.module.service."deployment.keycloakauthenticator-1.0-SNAPSHOT.jar".main: org.jboss.msc.service.StartException in service jboss.module.service."deployment.keycloakauthenticator-1.0-SNAPSHOT.jar".main: WFLYSRV0179: Failed to load module: deployment.keycloakauthenticator-1.0-SNAPSHOT.jar
    at org.jboss.as.server@15.0.1.Final//org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:116)
    at org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
    at org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
    at org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.jboss.modules.ModuleNotFoundException: com.twilio.sdk.twilio
    at org.jboss.modules.Module.addPaths(Module.java:1288)
    at org.jboss.modules.Module.link(Module.java:1644)
    at org.jboss.modules.Module.relinkIfNecessary(Module.java:1672)
    at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:303)
    at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:287)
    at org.jboss.as.server@15.0.1.Final//org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:93)
    ... 8 more

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Dependencies>org.keycloak.keycloak-services, com.twilio.sdk.twilio</Dependencies>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

我试过 com.twilio.sdk、com.twilio、com.twilio.Twilio、com.twilio.sdk.twilio,但没有...

我用maven shade插件解决了:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>