JNR-FFI :ImageJ プラグイン(Java)では使えない?

2017-04-30 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-04-29)の記事「Java:call_Lua51 似非モジュール」で書いた如く、
“jnr-ffi”を使えば、Java から LuaJIT を呼び出せた。


そもそも、
Java は、ImageJ のプラグイン作成用
としか(?)考えていない

そこで、
自作プラグイン・サンプルに、jnr-ffi を組み込んでみた。


昨年10月(2016-10-23)の記事「ImageJ 学習:プラグイン開発手順?」で作った:
「k_Java.java」をベースとした。

以下、太字部分を追加:
// ----- k_Java_FFI.java -----

import jnr.ffi.LibraryLoader; // 全4Dir必要

import ij.*;
import ij.gui.*;
import ij.plugin.PlugIn;
import ij.process.*;
import java.awt.*;

public class k_Java_FFI implements PlugIn{

public static interface libC { // これは適切に
int Add( int a, int b ); // 呼出関数のプロトタイプ
}

public void run( String arg ){
// =========================

ImagePlus imp1 = IJ.getImage(); // var → ImagePlus
ImageProcessor ip1 = imp1.getProcessor(); // var → ImageProcessor
int xx = ip1.getWidth(); // var → int
int yy = ip1.getHeight(); // 以下、var を適切に書き換え

libC klib = LibraryLoader.create(libC.class).load("_k_libs");
int zz = klib.Add( 10, 20 );


int x2=xx/2; int y2=yy/2;
ImagePlus imp2 = IJ.createImage( "out", "8-bit", x2, y2, 1 );
ImageProcessor ip2 = imp2.getProcessor();
imp2.show();

for( int y=0; y for( int x=0; x int v = (int)ip1.getf( x, y ); // cast も必須。
ip2.setf( x/2, y/2, zz );
}
}

imp2.updateAndDraw();

// =========================
}
}
以上の様なもの。

それから、
ImageJ インストール場所:D:/TOOL/ImageJ/ に、
4Dir と、「_k_libs.dll」を置き、

上記「k_Java_FFI.java」を
 D:/TOOL/ImageJ/plugins/_kami/ に置いた。



これで、ImageJでのコンパイルは正常?

しかし、実行してみると エラー
  java.lang.NoSuchMethodError: com.kenai.jffi.・・・
メソッドが見つからない???


この時の「Exception.txt」の内容は:
ImageJ 1.50i; Java 1.6.0_20 [32-bit]; Windows 7 6.1; 4295K of 640MB (<1%)

java.lang.NoSuchMethodError: com.kenai.jffi.CallContextCache.getCallContext(Lcom/kenai/jffi/Type;[Lcom/kenai/jffi/Type;Lcom/kenai/jffi/CallingConvention;Z)Lcom/kenai/jffi/CallContext;
at jnr.ffi.provider.jffi.InvokerUtil.getCallContext(InvokerUtil.java:205)
at jnr.ffi.provider.jffi.AsmLibraryLoader.generateInterfaceImpl(AsmLibraryLoader.java:127)
at jnr.ffi.provider.jffi.AsmLibraryLoader.loadLibrary(AsmLibraryLoader.java:59)
at jnr.ffi.provider.jffi.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:43)
at jnr.ffi.LibraryLoader.load(LibraryLoader.java:287)
at jnr.ffi.LibraryLoader.load(LibraryLoader.java:266)
at k_Java_FFI.run(k_Java_FFI.java:25)
at ij.IJ.runUserPlugIn(IJ.java:216)
at ij.IJ.runUserPlugIn(IJ.java:229)
at ij.IJ.runPlugIn(IJ.java:180)
at ij.Executer.runCommand(Executer.java:137)
at ij.Executer.run(Executer.java:66)
at java.lang.Thread.run(Thread.java:619)
これでは、

JNR-FFI は、ImageJ プラグイン(Java)では使えない?

アキラメ?


本日はここまで。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170329
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク