具有 gradle 依赖项的 MBean 构造函数错误

MBeans constructor error with gradle dependencies

我有一个 java 项目,该项目使用我生成的外部自定义 jar,我已将我的 jar 导入 build.gradle 为:

repositories {
    mavenCentral()
    flatDir { dirs './src/dist/lib' } }

dependencies {
    implementation name: 'PaymentServer-Lite'
    compile group: 'org.jpos', name:'jpos', version:'1.9.2'
    compile group: 'org.jpos.ee',   name: 'jposee-server-simulator',    version: '2.0.2-SNAPSHOT'
    compile ('org.jpos:jpos:2.1.2') {
        exclude(module: 'junit')
        exclude(module: 'hamcrest-core')
    }
    testCompile 'junit:junit:4.8.2' }

我的 class 从我的 jar 中导入了另一个 class,名为 Loader,它看起来像这样:

import com.recharge.mongo.Loader.Loader;

public class PaymentQ2 extends org.jpos.q2.iso.QServer {
    Loader loader;

    public PaymentQ2(){
        loader = Loader.getInstance();
    }
}

我的问题是,当我 运行 我的应用程序 运行 gradle 我收到以下错误:

 <exception name="Error thrown in the MBean's constructor">
    javax.management.RuntimeErrorException: Error thrown in the MBean's constructor
        at com.sun.jmx.mbeanserver.MBeanInstantiator.instantiate(MBeanInstantiator.java:330)
        at com.sun.jmx.mbeanserver.MBeanInstantiator.instantiate(MBeanInstantiator.java:620)
        at com.sun.jmx.mbeanserver.MBeanInstantiator.instantiate(MBeanInstantiator.java:527)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.instantiate(JmxMBeanServer.java:990)
        at org.jpos.q2.QFactory.instantiate(QFactory.java:78)
        at org.jpos.q2.Q2.deploy(Q2.java:578)
        at org.jpos.q2.Q2.deploy(Q2.java:391)
        at org.jpos.q2.Q2.run(Q2.java:259)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: com/recharge/mongo/Loader/Loader

不知道是我依赖的问题还是我jar的问题

问题是您将依赖项定义为 implementation,这意味着平台 运行 jar 已经包含它的实现。

在这种情况下,您正在 运行 将程序与 q2 连接起来,它本身的路径中没有那个 jar。如果你想 运行 带有 q2

的程序,你需要将依赖声明为 compile
dependencies {
        compile name: 'PaymentServer-Lite'
        ....
}

来源: