首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么Unity3d无法导入jar插件?

为什么Unity3d无法导入jar插件?
EN

Stack Overflow用户
提问于 2016-12-08 20:21:35
回答 2查看 594关注 0票数 2

我有一个小型的Unity3d项目来集成JAR。我在Android库项目中的(简化) java类如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.playsqreen.library.api;

... imports ...

public class PlaysreenAPI {

    private static PlayscreenAPI _api;

    private PlayscreenAPI(Activity activity) {
        this.activity = activity;
    }

    // static method to create singleton
    public static PlayscreenAPI build(Activity activity, String key) {
        if (_api == null) {
            // post processing something
            // before returning instance of this class
            _api = new PlayscreenAPI(activity);
        }
        return _api;
    }

    public String doEchoThis(String msg) {
        return "ECHO: " + msg;
    }

}

因此,在Android中,我生成我的JAR并将其转储到../MyProject/Assets/Plugins/Android中,在Unity中我可以看到如下所示:

然后,我创建了如下所示的C#脚本来加载我的java类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void Start () {
    _builder = new StringBuilder();
    try
    {
        _builder.Append(">>> Step 1\n");
        AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        if (activityClass != null)
        {
            _builder.Append(">>> Step 2\n");
            AndroidJavaObject activity = activityClass.GetStatic<AndroidJavaObject>("currentActivity");
            if (activity != null)
            {
                _builder.Append(">>> Step 3\n");
                AndroidJavaClass apiClass = new AndroidJavaClass("com.playsqreen.library.api.PlayscreenAPI");
                if (apiClass != null)
                {
                    _builder.Append(">>> Step 4\n");
                    object[] args = { activity, secretKey };
                    api = apiClass.CallStatic<AndroidJavaObject>("build", args);
                }
            }
        }
    }
    catch (System.Exception e)
    {
        _builder.Append(e.StackTrace.ToString());
    }
}

我在StringBuilder文本UI对象中打印,以便捕获 step 代码制动器,结果在步骤3之后,文本UI对象打印:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java.lang.ClassNotFoundException:com.playsqreen.library.api.PlayscreenAPI and etc...

我在这里找到的一个线程建议我使用Java 来检查站点中的java类是否真的包含在Jar中。我就这样做了,显示了我的Java类确实存在(见下面)

所以我现在真的坚持住了。我如何从联合加载我的java类?请帮帮忙。

谢谢。

在遵循下面的lysergic-acid建议之后,我包含了我的定制jar所需的其余jar,请参见下面的图。一切都很好:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-09 01:21:17

您没有在运行时发布要获得的完整错误消息。此外,您也没有提到哪些调试打印出来,所以我将尝试提出几个不同的问题,您可以检查。希望其中之一能够帮助解决这一问题:

  • JAR名称包含'.' (句号字符)。不知道联合是如何解释这一点的(我自己从未使用过这样的命名约定)。在联合中选择.JAR文件,并确保Unity将其标记为Android插件(应该在插件导入程序中选择"Android“)。为了安全起见,我还会尝试将其重命名为没有任何句点的名称。
  • 错误调用Java方法:在您的示例中,Java中的静态方法构建只接收一个参数(活动),但是当您从Unity调用它时,您将传递一个由2个参数组成的数组。
  • 缺失依赖项:当您的本地代码依赖于其他类(例如:来自其他库)时,如果您没有将这些库包含在.JAR文件中,那么您的类将不会在运行时加载,并且会因为诸如NoClassDefFoundException之类的神秘错误而失败。确保还包括所有依赖项。

**无羞耻推广:**我提供服务,以解决与Android有关的问题在团结。看看这里,如果您感兴趣:)

票数 2
EN

Stack Overflow用户

发布于 2016-12-09 06:16:36

安装最新的JDK版本,然后再试一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41053059

复制
相关文章
python--类属性的调用方法
我们现在要在do_class.py这个文件里调用class_learn.py里的类
py3study
2020/01/07
6000
python--类属性的调用方法
对象的属性方法调用的两种方法
json格式创建一个对象: //        用原生形式创建对象(也叫用json格式创建对象)就是花括号新建         var mix2={color:'骚粉色',         size:'6.44寸',         weight:'314g',         price:'3299元',         call:function(){             alert('可以打电话')         },         surf:function(){             a
十月梦想
2018/08/29
9790
Python类的调用以及私有和公有属性方法的调用
代码 class Site: __wocao = 123 #私有属性 wocao = 456 #公有属性 def __init__(self, name, url): self.name = name # public self.__url = url # private def who(self): print('name : ', self.name) print('url : ', self._
院长技术
2021/02/22
2.5K0
子类调用父类的同名方法和属性
在这里,定义Prentice类,继承了Master和School类,添加了和父类同名属性和方法
北山啦
2022/10/31
1.9K0
【python 3.6】类:访问属性及调用方法
调用方法时,使用x.zhekou(),要加括号,是否有返回,要看方法中是否有return
BH8ANK
2021/01/29
1.8K0
Vue 子组件调用父组件的属性,方法「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
2.9K0
php面向对象中static静态属性和静态方法的调用
这篇文章主要介绍了php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下 本文实例讲述了php中static静态属性和静态方法的调用。分享给大家供大家参考。具体如下: 这里分析了php面向对象中static静态属性和静态方法的调用。关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了。静态属性、方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性
joshua317
2018/04/16
1.8K0
Java——this关键字(调用本类属性、调用本类方法、表示当前对象)
this是一个非常灵活的关键字,不会明确表示一个固定概念,比如int,它就是表示一个整型。
Winter_world
2020/09/25
4.7K0
Java——this关键字(调用本类属性、调用本类方法、表示当前对象)
Java-方法重载时 调用未定义的对象属性
public class TestWayReload { int id; String name; String pwd; public TestWayReload(){ System.out.println(“Hellow World!”); System.out.println("################"); }
Fisherman渔夫
2019/07/30
5.6K0
图片批量重命名编号不带括号的_批量重命名不带括号
如果你是一名摄影工作者,那么你的电脑里肯定会保存很多的图片,为了更好的整理和保存这些图片,比如一类主题的图片以相同文字命名并且编号,这样就方便以后查找了,解决办法有了,那么怎么给这么多图片命名并编号呢?
全栈程序员站长
2022/10/03
1.4K0
图片批量重命名编号不带括号的_批量重命名不带括号
方法调用
参数传递值传递:在 Java 方法中传递参数,形参本质是实参的副本。参数是基础数据类型:对形参的改变不会影响实参。参数是指向对象的引用(包括数组、字符串):对对象数据进行更改会影响实参,但改变引用指向的对象不会影响实参。public class Test{ public static void main(){ int i = 0; int[] arr = {0}; test(i, arr); System.out.print(i);
Qwe7
2022/08/03
1.9K0
私有属性/方法的访问
在属性/方法名前有双下划线的,称为私有属性/方法,私有属性/方法外部不能直接访问,
py3study
2020/01/17
1.9K0
Java 方法里面 调用异步的 方法
先把longTimeMethod 封装到Spring的异步方法中,这个方法一定要写在Spring管理的类中,注意注解@Async
一写代码就开心
2022/11/21
3.2K0
[inside hotspot] java方法调用的StubCode
众所周知jvm有invokestatic,invokedynamic,invokestatic,invokespecial,invokevirtual几条方法调用指令,每个负责调用不同的方法, 而这些方法调用落实到hotspot上都位于hotspot\src\share\vm\runtime\javaCalls.hpp的JavaCalls :
racaljk
2019/02/26
3.4K0
方法的定义和调用
为每个运算符单独的创建一个新的类和main方法,我们会发现这样编写代码非常的繁琐,而且重复的代码过多。能否避免这些重复的代码呢,就需要使用方法来实现。 方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。 当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
共饮一杯无
2022/11/28
8410
方法的定义及调用
* 方法:其实就是完成特定功能的代码块 * 定义格式: * 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { * 方法体; * return 返回值; * } * 格式解释: * A:修饰符 目前记住public static * B:返回值类型 用于限定返回值的数据类型 * C:方法名 为了方便我们调用方法的名字 * D:参数类型 用于限定调用方法时传入的数据的类型 * E:参数名 用于接收调用方法时传入的数据的
葆宁
2019/04/18
7410
宏程序的调用方法
② 当 M98 程序段包含其他 NC 指令(如:G01 X100.0 M98 P )时,在该指令执行完后调用子程序,而 G65 则无条件调用宏程序。
lrglu
2022/05/16
2.5K0
宏程序的调用方法
点击加载更多

相似问题

调用microservice的HttpGet IActionResult方法返回所有属性为null

11

MVC HttpGet属性

13

用actionLink调用控制器HttpGet方法

113

不带类的属性方法

20

FakeItEasy ControllerTest HttpGet调用

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文