2015-02-27 2 views
1

Я работаю с JNI4net, и хотя библиотеки и установленные в пути сборки и затмения распознают их, он все равно дает мне ошибку времени выполнения. Почему это может быть по вашему мнению? Вот код.Исключение из потока «main» java.lang.Error: нерешенные проблемы с компиляцией: JNI4net

import net.sf.jni4net.*; 

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

import system.*; 
import system.Object; 
import system.io.TextWriter; 
import system.collections.IDictionary; 
import system.collections.IEnumerator; 

    /** 
    * @author Pavel Savara (original) 
    */ 
    public class Program { 
     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.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(); 
     } 
    } 

И вот сообщение, которое я получаю!

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Bridge cannot be resolved 
    Bridge cannot be resolved 
    Console cannot be resolved 
    IDictionary cannot be resolved to a type 
    system cannot be resolved 
    IEnumerator cannot be resolved to a type 
    system cannot be resolved to a type 
    system cannot be resolved to a type 
    Console cannot be resolved 
    Console cannot be resolved 
    Console cannot be resolved 
    TextWriter cannot be resolved to a type 
    Console cannot be resolved 

    at Program.main(Program.java:37) 
+0

Если вы не делитесь трассировкой стека и другими деталями ошибки времени выполнения, мы не сможем помочь! –

+0

Может ли это быть связано с установкой JAVAC и csc.exe? Я, хотя JAVAC поставляется с установкой JAVA! –

ответ

1

Чтобы сделать вашу жизнь проще, я собираюсь поделиться своими выводами здесь. Прочитайте ответ Мартина Серрано на мой вопрос. Это поможет вам понять, что нужно сделать. Затем перейдите на сайт jni4net и загрузите их примерную папку zip. Извлеките это. Здесь есть пример, который называется myCSharpDemoCalc. Замените вашу dll на myCSharpDemoCalc.dll (внутри рабочей папки), а затем запустите generateProxies.cmd (обязательно отредактируйте этот файл по имени вашей DLL) и запустите .cmd. Затем перейдите в рабочую папку и запустите build.cmd (изменить имя), чтобы создать свой JAR-файл. Возможно, вы не выплюнете j4n.dll, вам, вероятно, понадобится проложить путь самостоятельно. Используйте этот файл JAR. Это был самый простой способ создать JAR-файл из стороннего dll для меня.