2016-03-29 14 views
2

ライブラリプロジェクトを.jarファイルとして作成し、別のプロジェクトで使用しようとしました。しかし、クラスを取得中ですが、使用中に例外が見つかりませんでした。マニフェストファイル内のすべてのアクティビティをライブラリから追加しました。しかし、まだ同じエラーが発生しています。ライブラリプロジェクトを追加した後にクラスが見つかりません。

java.lang.NoClassDefFoundError: Failed resolution of: Lin/moovo/moovobroker/R$layout; 
at in.moovo.moovobroker.Activity.Mainactivity.onCreate(Mainactivity.java:85) 
at android.app.Activity.performCreate(Activity.java:6072) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2315) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424) 
at android.app.ActivityThread.access$900(ActivityThread.java:155) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1323) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:139) 
at android.app.ActivityThread.main(ActivityThread.java:5298) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745) 
Caused by: java.lang.ClassNotFoundException: Didn't find class "in.moovo.moovobroker.R$layout" on path: DexPathList[[zip file "/data/app/in.moovo.moovobrokerappmapview-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
at in.moovo.moovobroker.Activity.Mainactivity.onCreate(Mainactivity.java:85)  
at android.app.Activity.performCreate(Activity.java:6072)  
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2315)  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424)  
at android.app.ActivityThread.access$900(ActivityThread.java:155)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1323)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:139)  
at android.app.ActivityThread.main(ActivityThread.java:5298)  
at java.lang.reflect.Method.invoke(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:372)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)  
Suppressed: java.lang.ClassNotFoundException: in.moovo.moovobroker.R$layout 
at java.lang.Class.classForName(Native Method) 
at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
... 15 more 
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 
+1

私は同じ問題を抱えていたときにそれは私のために固定..それはまた、アンドロイドスタジオを再起動してみてください。 – Sanoop

答えて

1

このエラーはアクティビティではありません。これはin.moovo.moovobroker.Activity.Mainactivityに使用したin/moovo/moovobroker/R$layoutのものです。

あなたの使用方法は正しい方法ではありません。 jarファイルを使用する場合、jarに属するクラスは外部リソースに依存してはいけません。

正しい方法は、aarファイルを使用することです。方法を読むCreate aar file in Android Studio

0

jarファイルは、コードのみが含まれています。ここでは

は私のマニフェストファイル

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="@string/google_maps_key" /> 
    <activity android:name=".Activities.MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="in.moovo.moovobroker.Activity.Mainactivity"/> 
</application> 

ここでの私のエラースタックトレースです!あなたのjarファイルには何の活動も見つかりません。アクティビティリソースファイルを使用する場合は、代わりにaarファイルを使用する必要があります。

具体的には、 'aar'バンドルはAndroidライブラリプロジェクトのバイナリ配布です。

ファイル拡張子は.aarあり、Mavenの案件タイプは、同様AARであるべきであるが、ファイル自体は次のエントリを持つ単純なZIPファイル:

/AndroidManifest.xml (mandatory) 
/classes.jar (mandatory) 
/res/ (mandatory) 
/R.txt (mandatory) 
/assets/ (optional) 
/libs/*.jar (optional) 
/jni/<abi>/*.so (optional) 
/proguard.txt (optional) 
/lint.jar (optional) 

は、これらのエントリは、ルートに直接ありますzipファイル 詳細はthis postも参照してください。

関連する問題