当我尝试在频道中发布字符串时,我收到此错误:
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>
有人知道如何解决它?
答案 0 :(得分:1)
当您针对某个版本的库编译代码时,您获得AbstractMethodError
,但在运行时,您使用的是另一个,没有该方法,或者使用不同的签名。
仔细检查您的类路径以及您正在使用的CometD库版本。