2015-06-20 3 views
0

Я нашел эту библиотеку, и мне ее очень понравилось ... Но я не могу ее использовать ... I не знаю, что я делаю неправильно, но может ли кто-нибудь мне помочь?jni4net - java.lang.UnsatisfiedLinkError: net.sf.jni4net.Bridge.initDotNet() I

Я читал wiki и настройку среды. И я пытаюсь сделать простой мир привет в Java, вызывая C#.

Но я получаю эту ошибку:

java.lang.UnsatisfiedLinkError: net.sf.jni4net.Bridge.initDotNet()I

Вот мои настройки папки в Eclipse: https://cloud.githubusercontent.com/assets/6147142/8265327/e2419670-16cd-11e5-85bd-dae9ea275186.png

Вот мой главный класс:

package testJni4net; 

import java.io.IOException; 
import java.lang.String; 

import net.sf.jni4net.Bridge; 
import system.*; 
import system.Object; 
import system.io.TextWriter; 
import system.collections.IDictionary; 
import system.collections.IEnumerator; 

public class Teste1 { 
    public static void main(String[] args) throws IOException { 
     // create bridge, with default setup 
     // it will lookup jni4net.n.dll next to jni4net.j.jar 
     Bridge.setVerbose(true); 

     Bridge.init(); 

     // here you go! 
     Console.WriteLine("Hello .NET world!\n"); 

     // OK, simple hello is boring, let's play with System.Environment 
     // they are Hashtable realy 
     final IDictionary variables = system.Environment 
       .GetEnvironmentVariables(); 

     // let's enumerate all keys 
     final IEnumerator keys = variables.getKeys().GetEnumerator(); 
     while (keys.MoveNext()) { 
      // there hash table is not generic and returns system.Object 
      // but we know is should be system.String, so we could cast 
      final system.String key = (system.String) keys.getCurrent(); 
      Console.Write(key); 

      // this is automatic conversion of JVM string to system.String 
      Console.Write(" : "); 

      // we use the hashtable 
      Object value = variables.getItem(key); 

      // and this is JVM toString() redirected to CLR ToString() method 
      String valueToString = value.toString(); 
      Console.WriteLine(valueToString); 
     } 

     // Console output is really TextWriter on stream 
     final TextWriter writer = Console.getOut(); 
     writer.Flush(); 
    } 
} 

А вот полный стек след:

Can't initialize jni4net Bridgenet.sf.jni4net.Bridge.initDotNet()I 
Exception in thread "main" net.sf.jni4net.inj.INJException: Can't initialize jni4net Bridge 
    at net.sf.jni4net.CLRLoader.init(CLRLoader.java:45) 
    at net.sf.jni4net.Bridge.init(Bridge.java:35) 
    at net.sf.jni4net.Bridge.init(Bridge.java:31) 
    at testJni4net.Teste1.main(Teste1.java:19) 
Caused by: java.lang.UnsatisfiedLinkError: net.sf.jni4net.Bridge.initDotNet()I 
    at net.sf.jni4net.Bridge.initDotNet(Native Method) 
    at net.sf.jni4net.CLRLoader.init(CLRLoader.java:37) 
    ... 3 more 

ответ

0

Я не знаю, почему, но эта ошибка произошла со мной на jdk7. Поэтому я возвращаюсь к версии jni4net 0.8.3, и все в порядке! Простите за это. Но я пока не могу обновить jdk8 из-за других приложений-поставщиков, которые я использую.