Unity+IKVM / 在dll中调用Java方法时出现NullReferenceException

Unity+IKVM / NullReferenceException when calling Java method in dll

我正在开发一个 Unity(Unity3D 5.3.5f1) 项目,使用 Java 库转换为带有 IKVM 8.1 RC0 的 dll(另外使用 VS 进行 c# 开发)

我把几个相关的jar文件转成了一个dll文件。转换序列时没有警告或错误。我把它们放在 Unity 项目的 Assets 文件夹中。

我尝试在 C# 中 运行 我的 java 代码。

这是我的 C# 代码,其中执行 java 逻辑(实际上缩短了很多)

using UnityEngine;
using com.mypackage.hierarchy1;
using com.mypackage.hierarchy2; // Same as the package name from Java

public class Test : MonoBehaviour {
    ...... // several variables
    private Class1 var1;
    private Class2 var2;
    // note that, Class1 and Class2 are the same name used in Java

    void Start() {
        var1 = new Class1();
        var2 = new Class2();
    }

    void Update() {
        method1(certain_param_in_int);
    }

    ......

    void method1(int param) {
         method2(param, param2, param3,...);
    }

    void method2(int param, string param2, int param3, int param4) {
        var1.method_v1(param, param2,...); // Works well with no problem
        var2.initialize("str", var1.getResult(), "anotherstr");
        var2.run(); // This method occurs the problem
    }
}

问题是在执行var2.run()的时候。 var1 的方法没有问题。我检查了结果是正确的。无论如何,var2.run() 显示 NullReferenceException 如下

NullReferenceException: Object reference not set to an instance of an object
com.mypackage.hierarchy2.Class2.run ()
Test.method2 (Int32 param, System.String param2, Int32 param3, Int32 param4) (at Assets/Scripts/Test.cs:93)
Test.method1 (Int32 param) (at Assets/Scripts/Test.cs:66)
Test.Update () (at Assets/Scripts/Test.cs:33)

所以,我通过检查 var2 == nullvar2.Equals(null)[=35= 来测试它是否为 null ] 在调用 val2.run() 之前用 Debug.Log(),但它们都显示 'False'。它们不为空。

问题是什么?我应该更改 Java 副代码并重新生成 dll 吗?

谢谢。

p.s。我的 java 副代码使用 java.util.logging.Logger 并与其他 java 项目相关。 (jar转dll时也引用了,问题第二句我说了)

p.s.2。抱歉,我无法在此处打开 java 代码,因为它是机密代码

我发现这是我们自己代码的错误,而不是java代码本身。配置。