Доступ к методам dll в java

Я пытаюсь получить доступ к методам dll в java, написанном на C #. Из следующего кода я пытаюсь создать успешно сгенерированную dll.

using System;
using Microsoft.Win32;


namespace CyberoamWinHelper
{
    public class RegistryAccess
    {        
        public static String getValue(String key)
        {
            RegistryKey rk = Registry.CurrentUser;
            RegistryKey rk1=rk.OpenSubKey("Software\\Test", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
            rk1.SetValue(key, "val1");
            return rk1.GetValue(key).ToString();
        }
        public static void createSubkey(String name)
        {
            RegistryKey rk = Registry.CurrentUser;
            rk.CreateSubKey("Software\\Test");
        }
    }
}

После этого я загружаю сгенерированную dll в свой программный код Java, который выглядит следующим образом

public class JNI {

    /**
     * @param args the command line arguments
     */
    public native String getValue(String key);    

    public static void main(String[] args) {
        // TODO code application logic here

        try
        {
            System.loadLibrary("CyberoamWinHelper");
            JNI j=new JNI();       
            System.out.println(j.getValue("abc"));
        }
        catch(UnsatisfiedLinkError  e)
        {
            System.out.println("Ex" + e.getMessage());
        }
    }
}

После запуска этого кода он выдает следующую ошибку.

"Exjni.JNI.getValue(Ljava/lang/String;)Ljava/lang/String;"

Я не понимаю, о чем говорит эта ошибка, но я хочу ее исправить. И еще один вопрос, который у меня возник, так как метод, который я вызываю, является статическим, будет ли он вызываться таким образом? я имею в виду, чтобы вызвать статический метод, который нам нужен

"classname.methodname"

, так что здесь он сможет вызвать метод?

6
задан trapaank 30 December 2011 в 01:05
поделиться