Исключение в потоке "main" java.lang.Error: Нерешенные проблемы компиляции: JNI4net

Я работаю с JNI4net и, хотя библиотеки и установлены в пути сборки и eclipse распознает их, это все равно дает мне ошибку во время выполнения. Почему это может быть по вашему мнению? Вот код

 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)

1 ответ

Чтобы сделать вашу жизнь проще, я собираюсь поделиться своими выводами здесь. Прочтите ответ Мартина Серрано на мой вопрос. Это поможет вам понять, что нужно сделать. Затем перейдите на веб-сайт jni4net и загрузите папку с примерами zip. Извлеките это. Там есть пример, который называется myCSharpDemoCalc. Замените вашу dll на myCSharpDemoCalc.dll (внутри рабочей папки), а затем запустите generateProxies.cmd (не забудьте отредактировать этот файл под вашим именем dll) и запустите.cmd. Then go to the work folder and run build.cmd (edit name) to create your JAR file. It might not spit out the j4n.dll you probably need to twik the path yourself. Use this JAR file. This was the easiest way to create a JAR file from a third party dll for me.

Другие вопросы по тегам