Java 带依赖项的keydape扩展

Java 带依赖项的keydape扩展,java,maven,dependencies,wildfly,keycloak,Java,Maven,Dependencies,Wildfly,Keycloak,我正在创建一个带有依赖项的KeyClope扩展。我在pom.xml上添加了如下条目: <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160810</version> </dependency> 但是当我运行它时,我得到了一个错误: org.jboss.rest

我正在创建一个带有依赖项的KeyClope扩展。我在
pom.xml
上添加了如下条目:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20160810</version>
</dependency>
但是当我运行它时,我得到了一个错误:

org.jboss.resteasy.spi.UnhandledException: java.lang.NoClassDefFoundError: org/json/JSONObject
Caused by: java.lang.NoClassDefFoundError: org/json/JSONObject
Caused by: java.lang.ClassNotFoundException: org.json.JSONObject from [Module "deployment.keycloak-authenticator.jar" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    ... 66 more
如何在Keyclope中向扩展添加依赖项?

您必须这样做

步骤:

  • 在src/main/resources/META-INF目录或SPI中添加jboss-deployment-structure.xml文件,如下所示():

    
    
  • 将$keydove_设为HOME/modules/system/layers/base/org/json/json/main目录

  • 在创建的目录中添加json-20160810-javadoc.jar
  • 在与此内容相同的目录中添加module.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <module xmlns="urn:jboss:module:1.5" name="org.json.json">
        <properties>
            <property name="jboss.api" value="private"/>
        </properties>
    
        <resources>
            <resource-root path="json-20160810-javadoc.jar"/>
        </resources>
    
        <dependencies>
        </dependencies>
    </module>
    
    
    
  • 编译您的SPI

  • 重启钥匙斗篷
  • 重新部署SPI

  • 有一种更好的方法,部署为EAR归档。本项目展示了如何:

    有一种更好的方法,部署为EAR归档。本项目展示了如何:
    <jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.json.json" />
        </dependencies>
    </deployment>
    </jboss-deployment-structure>
    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <module xmlns="urn:jboss:module:1.5" name="org.json.json">
        <properties>
            <property name="jboss.api" value="private"/>
        </properties>
    
        <resources>
            <resource-root path="json-20160810-javadoc.jar"/>
        </resources>
    
        <dependencies>
        </dependencies>
    </module>