我正在尝试将YouTubePlayerFragment添加到Unity Android项目中。 我已经成功添加了显示按钮,文本和其他内容的普通视图,但是当我尝试将用于执行此操作的类扩展到YoutubePlayerFragment时,我就停了下来。 我不断收到java.lang.NoClassDefFoundError:

04-20 04:12:18.390    7404-7404/com.example.OSHook E/AndroidRuntime﹕ FATAL EXCEPTION: main
        Process: com.example.OSHook, PID: 7404
        java.lang.Error: FATAL EXCEPTION [main]
        Caused by: java.lang.NoClassDefFoundError: com.example.OSHook.YoutubeController
        at com.example.player.UnityPlayerNativeActivity.onCreate(UnityPlayerNativeActivity.java:66)
        at android.app.Activity.performCreate(Activity.java:5426)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
        at android.app.ActivityThread.access$900(ActivityThread.java:161)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:157)
        at android.app.ActivityThread.main(ActivityThread.java:5356)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
        at dalvik.system.NativeStart.main(Native Method)

在com.example.OSHook.YoutubeController片段行= new com.example.OSHook.YoutubeController(UnityPlayerNativeActivity.this,rootView); 在以下代码中:

package com.example.player;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.NativeActivity;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.util.Log;
import android.view.*;
import android.widget.Button;
import android.widget.RelativeLayout;

import com.example.OSHook.YoutubeController;
import com.google.android.youtube.player.YouTubePlayerFragment;
import com.unity3d.player.UnityPlayer;

public class UnityPlayerNativeActivity extends NativeActivity
{
    protected UnityPlayer mUnityPlayer;     // don't change the name of this variable; referenced from native code

    // UnityPlayer.init() should be called before attaching the view to a layout - it will load the native code.
    // UnityPlayer.quit() should be the last thing called - it will unload the native code.


    @Override
    public void onCreate (Bundle savedInstanceState)
    {

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);

        getWindow().takeSurface(null);
        setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
        getWindow().setFormat(PixelFormat.RGB_565);

        mUnityPlayer = new UnityPlayer(this);
        if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
            getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                   WindowManager.LayoutParams.FLAG_FULLSCREEN);

        int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
        boolean trueColor8888 = false;
        mUnityPlayer.init(glesMode, trueColor8888);

        View playerView = mUnityPlayer.getView();
        setContentView(playerView);
        playerView.requestFocus();

        ViewGroup rootView = (ViewGroup)UnityPlayerNativeActivity.this.findViewById(android.R.id.content);


        com.example.OSHook.YoutubeController fragment = new com.example.OSHook.YoutubeController(UnityPlayerNativeActivity.this, rootView);

        //FragmentManager fragmentManager = getFragmentManager();
        //FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        //fragmentTransaction.add(playerView.getId(), fragment);
        //fragmentTransaction.commit();



    }

UnityPlayerNativeActivity位于com.example.player程序包,YoutubeController.java和com.example.OSHook中的YouTubePlayerAPI.jar中。 我将此项目构建到一个库中,然后将罐子加载到Unity中。 当YoutubeController.java不扩展YouTubeFragment时,该代码可以完美工作,它可以在Unity播放器的视图上添加视图。

我猜想最终的Unity Android构建无法找到YoutubePlayer.jar,但是我找不到任何支持或修复的东西。 有人对我在做什么错有任何想法吗? 任何帮助将非常感激!

  ask by ThomQ translate from so

本文未有回复,本站智能推荐:

2回复

Android库不支持Java 8

问题 自从我在Android Studio 3.0中切换到Java 8后 , ShineButton库不再适用于我的项目了。 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/animation/Animat
2回复

eclipse中的java servlet项目和android库项目 - NoClassDefFoundError

我的工作区中有一些项目: AndroidMonitoring(取决于MonitoringModel, ) 编译并运行得很好但我需要在DataServlet项目中也可以使用MonitoringModel类。 我在ModelServlet项目的Java Build路径中添加了M
2回复

在Android Lib Project中添加了针对库的NoClassDefFoundError

我有一个Android Lib项目,在/ lib文件夹中添加了许多库(jar)。 现在,我编写了一个Android测试项目来测试Library项目的API,并在该测试项目中添加了Lib项目的jar。 一切都很好,但是当执行Library项目中的代码(使用jar文件)时,我得到了NoCla
1回复

访问库项目的类时出现NoClassDefFoundError

我已经通过使用eclipse将现有的android项目(例如App1)转换为android库项目,方法是在其android属性中将“ Is Library”设置为true。 然后在我的另一个项目(例如App2)中,我通过在库引用中添加App1来使用eclipse添加了该库项目。 在App2中
3回复

Android:从“ java”库扩展的类的java.lang.NoClassDefFoundError

以下是Eclipse的软件包浏览器的快照。 我将opencsv库用于该应用程序项目。 我将jar添加到主项目中的引用库中。 我在主项目中定义了一个类'X',该类扩展了jar库项目中的一个类。 当我创建类“ X”的实例时,它给出了 java.lang.NoClassDefFound
2回复

使用Android库项目作为参考的ClassDefNotFound异常

我有一个android库项目,我想从另一个项目中引用它。 该库项目包含活动和xml布局。 我已将其引用添加为以下MyProject属性-> Java Build Path->这样的项目 并以此顺序将其导出 但是当我尝试从引用的项目中调用活动时,出现异常,这是堆栈跟踪
1回复

Android库在发布后不解析依赖关系

我创建了使用android-async依赖的android库。 这个图书馆项目显示一切都很好。 但是当我将这个库发布到本地nexus然后尝试在其他项目中使用它时,然后在这个异步库使用的类中显示如下错误: 这是库的gradle文件: 所以为了构建和发布这个库项目,我使用命令
1回复

使用Apache FileUpload时java.lang.NoClassDefFoundError

我正在使用Apache FileUpload并且得到了java.lang.NoClassDefFoundError 我的第一个想法是检查.jar是否在类路径上-我注意到(在Eclipse中)在库区域下,有两个不同的部分: Apache Tomcat v6.0 Web应用程
2回复

java.lang.NoClassDefFoundError,Android Studio 2.6.0,Inner class,

我在运行时遇到以下错误:(所有代码都显示在最后。) 在以下行: 据我所知,错误来自于类在运行时不可用但在编译时可用。 它在Android中是否以相同的方式工作? 我发现这很奇怪,因为它是一个内在的阶级。 我使用的是Android Studio 2.6.0。 该代码的目
1回复

在我自己的Java文件中使用weka.jar文件时出现java.lang.NoClassDefFoundError

我在执行Java程序时遇到问题。 该代码放置在文件RunMining.java并包含多个import weka.[..]行。 weka库( weka.jar )放在同一文件夹中。 我编译它: $ javac -cp weka.jar RunMining.java 这将创建三