2012-01-28 6 views
1

私はjni4netを発見しています。これは、Javaと.NETの間のブリッジを提供するために使用される技術です。そこで、新しいEclipse Javaプロジェクトを作成し、jni4net-0.8.6.0-bin/samples/myCSharpDemoCalc-> MyCalcUsageInJava.javaのサンプルコードをこのプロジェクトにコピーしました。しかし、2つのインポート "mycsharpdemocalc.DemoCalc"と "mycsharpdemocalc.ICalc"が見つからないため、コードをコンパイルできません。 mycsharpdemocalc.cをJavaプロジェクトに統合/インポートしてコードをコンパイルする方法を理解できません。jni4netサンプルを発見する

import net.sf.jni4net.Bridge; 

import java.io.IOException; 

import mycsharpdemocalc.DemoCalc; 
import mycsharpdemocalc.ICalc; 

public class MyCalcUsageInJava { 
    public static void main(String arsg[]) throws IOException { 
     Bridge.init(); 
     Bridge.LoadAndRegisterAssemblyFrom(new java.io.File("MyCSharpDemoCalc.j4n.dll")); 

     ICalc calc = new DemoCalc(); 
     final int result = calc.MySuperSmartFunctionIDontHaveInJava("Answer to the Ultimate Question of Life, the Universe, and Everything"); 

     System.out.printf("Answer to the Ultimate Question is : " + result); 
    } 
} 
+0

クラスパスにはクラスパスがありますか? –

+0

このサンプルを含む唯一のものは、Calc.cs、MyCSharpDemoCalc.c、MyCSharpDemoCalc.sln、MyCalcUsageInJava.javaおよびMyCSharpDemoCalc.dllです。だから、MyCSharpDemoCalc.dllをクラスパスに入れましたが、コードをコンパイルすることはできません。 –

+0

@ YouKuper問題を解決しましたか?私は同じ問題があります... – davioooh

答えて

1

各サンプルディレクトリにReadMeがあります。 プロキシ(Javaコードで使用される)を生成するには、proxygenツールを使用する必要があります。 これを行うためのgenerateProxies.cmdバッチがあります。 もっと複雑なものは、proxygenの設定ファイルが必要な場合があります。

コミュニティもありますWiki

+0

このプロジェクトをコンパイルした後、私はそれを実行しようとしました。次のエラーメッセージが示された:スレッドの例外 "メイン" ます。java.lang.UnsatisfiedLinkError:mycsharpdemocalc.DemoCalc .__ ctorDemoCalc0(LNET/SF/jni4net /注射/ IClrProxy;)V \t mycsharpdemocalc.DemoCalc .__ ctorDemoCalc0(ネイティブメソッド) で\t at mycsharpdemocalc.DemoCalc。 (DemoCalc.java:25) \t(MyCalcUsageInJava.main(MyCalcUsageInJava.java:13))。何が間違っている、私に教えてくれますか? –

+0

あなたは私が推測する橋を初期化するのを忘れました。または、すべてのDLLを登録していない。 –

+0

@PavelSavara私はあなたのライブラリを使用して同じ問題を抱えています。私は自分のDLLをロードしてlibフォルダに 'jni4net.j-0.8.6.0.jar'、 ' jni4net.n-0.8.6.0.dll'と 'jni4net.n.w32.v40-0.8.6.0 .dll'。 Proxygenはjvmフォルダにjavaクラスを生成し、clrフォルダにcsファイルを生成しました。私は最初のものだけを使用しています。それが正しいか? – davioooh

関連する問題