2010-12-17 6 views
0

JRubyで実行する必要があるアプリケーションの機能を開発中です。私は「ネイティブ」Rubyを開発しています。JRubyで.soファイルのエラーが発生する

MissingSourceFile::私はJRubyの中で、このクラスから任意のメソッドを実行しようとすると私のようなエラーメッセージを取得ロードするためにはそのようなファイルを - SERIALPORT

私はこの問題は、必要 "にではあると思いますシリアルポート。 JRubyでこの作業を行う方法はありますか? .soファイルを必要とする別の方法はありますか?またはJRubyでSerialPortクラスを提供することができる宝石ですか?私はruby-serialport gemをインストールしようとしましたが、それは正しくインストールされていないようです(Windowsのnmakeの問題)。ここで

は私のクラスファイルは次のようになります。

require 'serialport.so' 
class AlphaDisplay 

    #STATES 
    SOLID = "b" 
    ROTATE = "a" 
    BLINK = "c" 
    #COLORS 
    RED = "1" 
    GREEN = "2" 
    YELLOW = "3" 
    ORANGE = "7" 

    def self.message(address = 00, text = "ICS", color = AlphaDisplay::GREEN, state = AlphaDisplay::SOLID) 
    address = address.to_s 
    if address.length == 1 
     address = "0#{address}" 
    end 
    string = 1.chr + 90.chr + address + 2.chr + 65.chr + 65.chr + 27.chr + 26.chr + state + 28.chr + color + text + 4.chr 
    return string 
    end 
    def self.test(address = 00, text = "ICS", color = AlphaDisplay::GREEN, state = AlphaDisplay::SOLID) 
    sp = SerialPort.new(0, 9600, 8, 1, SerialPort::NONE) 
    sp.write(message(address,text,color,state)) 
    sp.close 
    end 
end 

def SerialPort::new(port, *params) 
    sp = create(port) 
    begin 
    sp.set_modem_params(*params) 
    rescue 
    sp.close 
    raise 
    end 
    return sp 
end 

def SerialPort::open(port, *params) 
    sp = create(port) 
    begin 
    sp.set_modem_params(*params) 
    if (block_given?) 
     yield sp 
     sp.close 
     return nil 
    end 
    rescue 
    sp.close 
    raise 
    end 
    return sp 
end 
+0

シリアルポートにアクセスするためのネイティブJavaメソッドは使用できません。 –

答えて

0

私の知る限りでは、JRubyのは、任意のネイティブエミュレーション層、JavaでちょうどRubyインタプリタを提供していません。問題は、 ".so"ファイルがUNIX固有のものであり、何らかのエミュレーション/変換なしでWindows上で実行できないことです。

あなたはJRubyのを使用するつもりならネイティブ拡張を必要とするRubyライブラリを避ける方がいいでしょう。

関連する問題