Java 如何导入&x27;。jar';图书馆档案变成统一?

Java 如何导入&x27;。jar';图书馆档案变成统一?,java,unity3d,jar,import,Java,Unity3d,Jar,Import,如何将.jar文件导入Unity3D?我使用的是Windows平台,而不是Android、iOS、Mac等。我将.jar文件放入Assets/Plugins/x86。我不明白如何在.jar库中调用我的函数 我在这里找不到适用于windows的任何内容: 谢谢。据我所知,在Unity on Windows平台上,您没有内置的支持,但使用Windows将Java字节码转换为.NET很容易。它附带一个名为ikvmc的转换器,因此您可以简单地使用: ikvmc your.jar -target:libr

如何将
.jar
文件导入Unity3D?我使用的是Windows平台,而不是Android、iOS、Mac等。我将
.jar
文件放入Assets/Plugins/x86。我不明白如何在
.jar
库中调用我的函数

我在这里找不到适用于windows的任何内容:


谢谢。

据我所知,在Unity on Windows平台上,您没有内置的支持,但使用Windows将Java字节码转换为.NET很容易。它附带一个名为ikvmc的转换器,因此您可以简单地使用:

ikvmc your.jar -target:library ==> add -target:library to generate dll
它会将您的jar转换为您的.dll,这是您在.NETDLL中重写的Java代码。然后,您只需将其放在资产文件夹中,并将其当作本机.NET库使用即可。例如,如果您的java代码是:

public class HelloWorld {
    public static void hello() {
        System.out.println("Hello, World");
    }
}

如果要在unity中直接添加jar文件,只需通过
HelloWorld.hello()

使用它

下面的示例类文件,编译成jar

package xxx;
    import android.util.Log;
    public class Helper {
    public static void testAndroid()
        {
        Log.i(“Unity”, “test android”);
        }
    }
将jar文件放在unity中的plugins->Android中,并在插件编辑器中检查Android平台。注意,如果您使用的是android引用,它将仅在android设备或模拟器上运行

创建一个新的MonoBehavior脚本TestAndroidPlugin.cs,并将其连接到相机:

public class TestAndroidPlugin : MonoBehaviour {    
    void Start () {
        Debug.Log("Android function is to be called");


        var ajc = new AndroidJavaClass("xxx.Helper"); //(1)
        ajc.CallStatic("testAndroid");                                       //(2)
        Debug.Log("Androidtion is called");  
    }
}

据我所知,unity不支持用于windows开发的jar库,因为支持的编程语言是

UnityScript(用于unity的javascript)、boo和C#

您可以在这里查看文档
即使他们放弃了对unity 5.0中预订的支持,但您可以使用它为什么不找一个c#库来代替jar库来解决你想解决的问题呢

Jar文件是针对Java的。Unity是基于.NET的,也有本地插件——据我所知,它不支持Java。但是,它支持Android Java插件,不支持Windows。我不明白…使用JD_GUI工具查看这个jar包含哪些java类。如果是安卓系统,你可以使用AndroidJavaClass和AndroidJavaObject类。安卓系统上的Unity支持Java插件,这似乎并不奇怪……它不适用于安卓系统。对于Windows。我不需要JD_GUI,因为它是我的库。谢谢,我很快就会测试它。:)如何使用我的dll?在我的dll函数中,如下所示;public static boolean Test1(int N)public static String Test2(),因此您只需调用
YourClass.Test1(10)
,查看对我的answerThx的更新,我不尝试它,但为什么不使用DLLIMPORT和extern void?因为它仅用于从.NET代码导入非托管(而非.NET)库,但是使用ikvmc创建的库是.NET管理的库。有关托管插件的更多信息,请参见此处: