0

当我尝试在频道中发布字符串时出现此错误:

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>

有人知道怎么解决吗??

4

1 回答 1

1

当您针对某个版本的库编译代码时,您会得到AbstractMethodError,但在运行时您正在使用另一个,没有该方法,或者具有不同的签名。

仔细检查您的类路径和您正在使用的CometD库版本。

于 2012-12-06T14:27:15.340 回答