Не могу опубликовать на канале кометд

Я получаю эту ошибку, когда пытаюсь опубликовать строку в канале:

java.lang.AbstractMethodError: org.cometd.client.BayeuxClient$BayeuxClientChannel.publish(Ljava/lang/Object;)V

это код, который пытается опубликовать:

public class EnviadorMensagem implements Runnable {

private String nomeCanal;
private Mensagem mensagem;
private ClientSession cliente;
private boolean pausado = true;
private boolean cancelado = false;

@Override
public void run() {
    while (pausado) {
        pausar();
    }
    if (!cancelado) {
        converterEEnviar();
    }
}

private void pausar() {
    synchronized (this) {
        try {
            this.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

private void converterEEnviar() {
    ConversorMensagem conversor = new ConversorMensagem();
    ClientSessionChannel canal = cliente.getChannel(nomeCanal);
    canal.publish(conversor.converter(mensagem)); //<- the error happens here!!
}

public void ativar() {
    synchronized (this) {
        pausado = false;
        this.notifyAll();
    }
}

public void cancelar() {
    synchronized (this) {
        cancelado = true;
    }
    ativar();
}

public void setNomeCanal(String nomeCanal) {
    this.nomeCanal = nomeCanal;
}

public void setMensagem(Mensagem mensagem) {
    this.mensagem = mensagem;
}

public void setCliente(ClientSession cliente) {
    this.cliente = cliente;
}
}

Как видите, этот класс выполняется в отдельном потоке. это часть моего pom.xml:

<dependencies>
    <dependency>
        <groupId>org.cometd.java</groupId>
        <artifactId>cometd-java-client</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.cometd.java</groupId>
        <artifactId>bayeux-api</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-client</artifactId>
        <version>8.1.7.v20120910</version>
    </dependency>
</dependencies>

Кто-то знает как решить??


person brevleq    schedule 06.12.2012    source источник


Ответы (1)


Вы получаете AbstractMethodError, когда вы скомпилировали свой код для версии библиотеки, но во время выполнения вы используете другую, которая не имеет этого метода или имеет другую сигнатуру.

Дважды проверьте путь к классам и версии библиотеки CometD, которые вы используете.

person sbordet    schedule 06.12.2012
comment
IntelliJ добавил другую версию зависимости cometd в другой pom.xml - person brevleq; 06.12.2012