2012-01-28 2 views
1

Я открываю jni4net. Это технология, используемая для обеспечения моста между Java и .NET. Итак, я создал новый проект Java Eclipse и скопировал код примера из jni4net-0.8.6.0-bin/samples/myCSharpDemoCalc-> MyCalcUsageInJava.java в этот проект. Однако код не может быть скомпилирован, потому что два импорта «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-коде) вам необходимо использовать проксигенный инструмент. Существует команда 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 создал java-класс в папке jvm и файл cs в папке clr. Я использую только первый. Правильно ли это? – davioooh

Смежные вопросы