0

私は Apache Mina とのシリアル接続で何日も働いてきました。しかし、私は運がありませんでした。小さなテスト プログラムを作成したところ、次のエラーが返されました。

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.mina.core.session.AbstractIoSession.<init>(Lorg/apache/mina/core/service/IoService;)V
at org.apache.mina.transport.serial.SerialSessionImpl.<init>(SerialSessionImpl.java:73)
at org.apache.mina.transport.serial.SerialConnector.connect0(SerialConnector.java:97)
at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:262)
at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:172)
at org.apache.mina.timeserver.SerialTest.main(SerialTest.java:22)

この問題を解決するために何ができるかわかりません...

ここに私の小さなSerialTest.javaがあります

package org.apache.mina.timeserver;
import org.apache.mina.transport.serial.*;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.codec.ProtocolCodecFilter;

public class SerialTest extends IoHandlerAdapter {

@SuppressWarnings("deprecation")
public static void main(String [] args){

    SerialConnector connector = new SerialConnector();      
    connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(
            new TextLineCodecFactory()));
    connector.setHandler(new SerialTest());
    String comPort = "COM10";
    int bauds = 9600;
    ConnectFuture cf = connector.connect(
        new SerialAddress(comPort, bauds,   SerialAddress.DataBits.DATABITS_8,
            SerialAddress.StopBits.BITS_1, SerialAddress.Parity.NONE,
            SerialAddress.FlowControl.NONE));       

    cf.join();      
    String rawcmd = "";
    while (true){
        rawcmd = System.console().readLine().trim();
        if (rawcmd.equals("exit"))
            break;
        else if (rawcmd.equals(""))
            continue;
        /* IoBuffer.setUseDirectBuffer(false); 
        IoBuffer buf = IoBuffer.allocate(1024); */            
        cf.getSession().write(rawcmd + "\r");//cf.getSession().write(rawcmd + "\r\n"); also tested
    }
    //cf.getSession().getCloseFuture().awaitUninterruptibly();
    cf.getSession().close();
    connector.dispose();
}
public void sessionClosed(IoSession session) {     
    System.err.println("Total " + session.getReadBytes() + " byte(s)");
}
public void messageSent(IoSession session, Object message) {
    System.out.println("message has been sent: " + message);
}
public void messageReceived(IoSession session, Object message) {
    System.out.println("message received:[" + message + "]");
}   
}
4

1 に答える 1

0

フレームワークを最新の安定版に更新し、シリアル用の追加ファイル (mina-transport-serial) も更新しました。

今ではうまくいきます。ご協力いただきありがとうございます。

于 2012-12-13T11:27:14.337 に答える