Ошибка конструктора MBeans с зависимостями gradle - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть проект 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' }

Мой класс импортировал другой класс из моего jar с именем Загрузчик и выглядит примерно так:

import com.recharge.mongo.Loader.Loader;

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

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

Моя проблема в том, что при запуске приложения с run 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

Я не знаю, является ли это проблемой моих зависимостей или проблемой, вызванной моей флягой

1 Ответ

1 голос
/ 24 сентября 2019

Проблема в том, что вы определяете зависимость как implementation, что означает, что платформа, на которой выполняется jar, уже содержит свою реализацию.

В этом случае вы запускаете программу с q2, которая не имеетэтот кувшин на своем пути сам по себе.Вам нужно объявить зависимость как compile, если вы хотите запустить программу с q2

dependencies {
        compile name: 'PaymentServer-Lite'
        ....
}

source: https://stackoverflow.com/a/44493379/3444205

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...