我有一个小型的Unity3d项目来集成JAR。我在Android库项目中的(简化) java类如下所示:
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类:
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对象打印:
java.lang.ClassNotFoundException:com.playsqreen.library.api.PlayscreenAPI and etc...
我在这里找到的一个线程建议我使用Java 来检查这站点中的java类是否真的包含在Jar中。我就这样做了,显示了我的Java类确实存在(见下面)
所以我现在真的坚持住了。我如何从联合加载我的java类?请帮帮忙。
谢谢。
在遵循下面的lysergic-acid建议之后,我包含了我的定制jar所需的其余jar,请参见下面的图。一切都很好:)
发布于 2016-12-09 01:21:17
您没有在运行时发布要获得的完整错误消息。此外,您也没有提到哪些调试打印出来,所以我将尝试提出几个不同的问题,您可以检查。希望其中之一能够帮助解决这一问题:
**无羞耻推广:**我提供服务,以解决与Android有关的问题在团结。看看这里,如果您感兴趣:)
发布于 2016-12-09 06:16:36
安装最新的JDK版本,然后再试一次。
https://stackoverflow.com/questions/41053059
复制