我正在开发一个Unity(Unity3D 5.3.5f1)项目,使用使用IKVM 8.1 RC0转换为dll的Java库(另外使用VS进行c#开发)
我将几个相关的jar转换成一个dll文件。转换序列没有警告或错误。我把它们放在Unity项目的Assets文件夹中。
我尝试在C#中运行我的java代码。
这是我执行java逻辑的C#代码(实际上缩短了很多)
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)
所以,我在调用之前通过Debug.Log()检查 var2 == null 以及 var2.Equals(null)来测试它是否为null val2.run(),但所有这些都显示为'False'。它们不是空的。
有什么问题?我应该更改Java端代码并重新生成DLL吗?
感谢。
P.S。我的java端代码使用java.util.logging.Logger并与其他java项目相关。 (正如我在问题的第二句中所说的那样,将jar转换为dll时也会引用)
p.s.2。对不起,我不能在这里打开java代码,因为它是机密代码
答案 0 :(得分:0)
我发现这是我们自己的代码的错误,但不是java代码本身。配置。