2016-07-12 2 views
0

でJavaメソッドを呼び出すときに、私はJavaライブラリを使用してユニティ(Unity3D 5.3.5f1)プロジェクトはIKVM 8.1 RC0(さらにC#の開発のためのVSを使用して)ユニティ+ IKVM /とNullReferenceException DLL

でDLLに変換開発しています私はいくつかの関連するjarファイルを1つの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: 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) 

以下のようにとNullReferenceExceptionを示して、私はそれがVAR2をチェックしてヌルであるかどうかをテストしDEBUG.LOGと== nullのともvar2.Equals(ヌル) ()はval2.run()を呼び出す直前に、すべてがFalseを示していました。彼らはnullではありません。

何が問題ですか? Javaのサイドコードを変更してDLLを再生成する必要がありますか?

ありがとうございました。

p.s.私のJava側のコードは、java.util.logging.Loggerを使用し、他のjavaプロジェクトと関連しています。 (私は質問の2番目の文で言ったように、jarをdllに変換するときにも参照されます)

p.s.2。申し訳ありませんが、機密コードなのでここでjavaコードを開くことはできません

+0

**関連する複数のjarを1つのdllファイルに変換しました。** jarファイルをdllに変換しません。それをそのまま残して、Assets/Plugins/Androidに入れてください。 **申し訳ありませんが、私はjavaコードを機密コード**のためオープンできません。 Javaプラグインのレプリカを作成し、元のコードとは異なる何かに変更して、ここに投稿してください。 run()関数でClass1とClass2のスクリプトをポストする必要もあります。あなたの問題を再現するために使用できるものがない場合、あなたを助ける方法はありません。今のところ、あなたのコードは完成しておらず、助けを得るには十分ではありません。 – Programmer

+0

@Programmerそれをそのまま残して、Assets/Plugins/Android - >に入れてください。そして、ビルドターゲットがAndroidの場合にのみ使用できます。 Androidのアクティビティを含む –

答えて

0

私はそれが私たち自身のコードのエラーだが、Javaコード自体ではないことが判明しました。構成。

関連する問題