JNI 4NET - двусторонняя связь между JAVA и C# в обе стороны - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь использовать JNI 4NET для двухсторонней связи между JAVA и C#. У меня есть следующий супер простой C# проект:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using jnijavatestapp;

namespace JNICSharpTestApp
{
    public class JNICSharpTest
    {
        public void HelloWorldFromCSharp()
        {
            Console.WriteLine("Hi Java, this is C# talking!!!");
        }

        public void CallBackToJAVA()
        {
            JAVACLASS java = new JAVACLASS();
            java.HelloWorldJAVA();
        }
    }
}

Тогда у моего java проекта есть два класса, подобных этому:

package jnijavatestapp;
import java.io.IOException;
import jnicsharptestapp.JNICSharpTest;
import net.sf.jni4net.Bridge;

public class JNIJavaTestApp 
{

    public static void main(String[] args) throws IOException {
       InitJNI4Net();
       JNICSharpTest test = new JNICSharpTest();
       test.HelloWorldFromCSharp();
       test.CallBackToJAVA();
    }    

    public static void InitJNI4Net() throws IOException{
        Bridge.init();
        java.io.File file = new java.io.File("..\\COMMON_RESOURCES\\work\\JNICSharpTestApp.j4n.dll");
        Bridge.LoadAndRegisterAssemblyFrom(file);
    }
}

public class JAVACLASS
{
    public void HelloWorldJAVA()    
    {
        System.out.println("Hi C# this is JAVA Talking!!");
    }
}

Я могу получить JAVA для Вызовите C#, но как только я попытаюсь вызвать test.CallBackTo JAVA (), это не удастся.

Вот как я строю:

@echo off

cd COMMON_RESOURCES

echo.
echo Running ProxyGen.exe for C#...
..\JNI4NET\bin\proxygen.exe work\JNICSharpTestApp.dll -wd work

echo.
echo Building C#...
cd work
build

@echo off
copy JNI4NET\lib\*.* COMMON_RESOURCES\work /y 
copy JNIJavaTestApp\dist\JNIJavaTestApp.jar COMMON_RESOURCES\work /y 

cd COMMON_RESOURCES

echo.
echo Running ProxyGen.exe for JAVA...
..\JNI4NET\bin\proxygen.exe ..\JNIJavaTestApp\dist\JNIJavaTestApp.jar -wd work

echo.
echo Building JAVA...
cd work
build

Шаги:

  1. Сборка. NET проекта и копирование dll в «рабочую» папку
  2. Создание прокси в проекте. net
  3. Запуск build.bat
  4. Создание прокси в проекте jvm 5.Run build.bat

Может не понимаю, что я делаю неправильно, чтобы получить двусторонние комы с JNI 4NET и нужна помощь!

ссылка на проект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...