Java Android,ClassNotFoundException当使用;“提供的项目”;或IllegalArgumentException:已添加,当使用;“编写项目”;
在gradle dependencies脚本中使用“提供的项目”时,我的类com.xyz.sample.QuickSampleApplication在应用程序启动时遇到了一个非常不寻常的ClassNotFoundException,或者另一个错误未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:在渐变依赖中 实际错误:Java Android,ClassNotFoundException当使用;“提供的项目”;或IllegalArgumentException:已添加,当使用;“编写项目”;,java,android,android-studio,illegalstateexception,Java,Android,Android Studio,Illegalstateexception,在gradle dependencies脚本中使用“提供的项目”时,我的类com.xyz.sample.QuickSampleApplication在应用程序启动时遇到了一个非常不寻常的ClassNotFoundException,或者另一个错误未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:在渐变依赖中 实际错误: E/AndroidRuntime(17749): java.lang.RuntimeException: Unable to ins
E/AndroidRuntime(17749): java.lang.RuntimeException: Unable to instantiate application com.xyz.sample.QuickSampleApplication:
java.lang.ClassNotFoundException: Didn't find class
"com.xyz.sample.QuickSampleApplication" on path: DexPathList[[zip file
"/data/app/com.uei.sample.library-2.apk"],nativeLibraryDirectories=[/data/app-
lib/com.uei.sample.library-2, /vendor/lib, /system/lib]]
compile fileTree(dir: 'src/main/java', include: ['*'])
项目说明:
E/AndroidRuntime(17749): java.lang.RuntimeException: Unable to instantiate application com.xyz.sample.QuickSampleApplication:
java.lang.ClassNotFoundException: Didn't find class
"com.xyz.sample.QuickSampleApplication" on path: DexPathList[[zip file
"/data/app/com.uei.sample.library-2.apk"],nativeLibraryDirectories=[/data/app-
lib/com.uei.sample.library-2, /vendor/lib, /system/lib]]
compile fileTree(dir: 'src/main/java', include: ['*'])
com.xyz.sample.QuickSampleApplication由com.xyz.sample.QuickSampleActivity使用,并且两个类都在同一个包中com.xyz.sample
com.xyz.sample.QuickSampleApplication使用一个名为“QuickSDK库”的JAR,我将其作为“提供的依赖项”包含在gradle中,请参见下面的gradle片段:
dependencies {
provided project(':quicksdklibrary')
//OR provided fileTree(dir: 'libs/MyExternalLibs', include: '*.jar')
compile 'com.android.support:appcompat-v7:21.0.0'
}
JAR实际上在IDE中解析,构建时没有错误,JAR的内部类对我的应用程序类可见,例如我的:
com.xyz.sample.QuickSampleApplication
或com.xyz.sample.QuickSampleActivity
com.xyz.sample.QuickSampleApplication和
和com.xyz.sample.QuickSampleActivity在AndroidManifest.xml中声明/拼写正确:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xyz.sample.library"
android:versionCode="1"
android:versionName="1.0.002">
<uses-sdk android:minSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:name="com.xyz.sample.QuickSampleApplication">
<activity android:name="com.xyz.sample.QuickSampleActivity" android:screenOrientation="portrait"
android:label="@string/app_name" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
或
或
或
或
根据评论,还尝试使用SourceSet标记:
或使用sourceSets标记:
sourceSets {
main{
java {
java.srcDirs 'src/main/java'
}
}
}
或
但是,生成的“.apk”仍然不包含类包com.xyz
有关此问题的最新更新,请参见以下内容:
E/AndroidRuntime(17749): java.lang.RuntimeException: Unable to instantiate application com.xyz.sample.QuickSampleApplication:
java.lang.ClassNotFoundException: Didn't find class
"com.xyz.sample.QuickSampleApplication" on path: DexPathList[[zip file
"/data/app/com.uei.sample.library-2.apk"],nativeLibraryDirectories=[/data/app-
lib/com.uei.sample.library-2, /vendor/lib, /system/lib]]
compile fileTree(dir: 'src/main/java', include: ['*'])
替代尝试#1:
E/AndroidRuntime(17749): java.lang.RuntimeException: Unable to instantiate application com.xyz.sample.QuickSampleApplication:
java.lang.ClassNotFoundException: Didn't find class
"com.xyz.sample.QuickSampleApplication" on path: DexPathList[[zip file
"/data/app/com.uei.sample.library-2.apk"],nativeLibraryDirectories=[/data/app-
lib/com.uei.sample.library-2, /vendor/lib, /system/lib]]
compile fileTree(dir: 'src/main/java', include: ['*'])
当我在gradle中使用此标签时
dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
provided project(':quicksdklibrary')
}
然后我得到ClassNotFoundException(检查apk&class classes.dex确认没有包含我的QuickDKLibrary类),但是当我使用:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// OR compile files(libs/:quicksdklibrary.jar)
// OR compile project(':quicksdklibrary')
compile 'com.android.support:appcompat-v7:23.0.1'
}
然后我得到了另一个错误,它甚至不允许我部署/安装apk:
:app:preDexDebug
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/ACEUtils$Creator;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/AEUtils;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/AEngine;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/ATag;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/ABehavior;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/AContext;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/AControl$List;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/AControl;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/xyz/ace/AData;
UNEXPECTED TOP-LEVEL EXCEPTION:
Error:Execution failed for task ':app:preDexDebug'.
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command 'C:\Program
Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 2
**其他尝试:**
我确实检查了整个项目,并多次重新创建了该项目,以确保我多次没有包含此JAR,但是我仍然收到相同的错误“未捕获的翻译错误:java.lang.IllegalArgumentException:已添加…”
我还重新安装了Android SDK,并将我的JDK更新为jdk1.7.0_80,但是我仍然收到这个错误
我查看了stackoverflow上的其他帖子,其中提到我应该删除对支持库版本4或7的引用,我也尝试过
其他尝试:
E/AndroidRuntime(17749): java.lang.RuntimeException: Unable to instantiate application com.xyz.sample.QuickSampleApplication:
java.lang.ClassNotFoundException: Didn't find class
"com.xyz.sample.QuickSampleApplication" on path: DexPathList[[zip file
"/data/app/com.uei.sample.library-2.apk"],nativeLibraryDirectories=[/data/app-
lib/com.uei.sample.library-2, /vendor/lib, /system/lib]]
compile fileTree(dir: 'src/main/java', include: ['*'])
我还检查了实际的JAR,看看是否在同一个包中创建了多个具有相同名称的类,而这些类不是
我还尝试添加模糊版本,它将具有不同的类名,但是JAR的模糊版本有“未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:…”错误
问题:
如何解决此“未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:”,为什么app:preDexDebug认为我的类有多个版本,或者尝试添加多个版本
万分感谢大家 我也有同样的问题,但答案与支持库有关
compile 'com.android.support:appcompat-v7:21.0.0'
尝试在没有支持库的情况下创建一个新的应用程序,或者简单地尝试删除这个应用程序,看看会发生什么
更新(您还应检查是否存在此项):
可能您已经添加了两次库,如下所示:
意味着从库文件夹中删除
jar
文件对您来说会更好。谢谢您的帮助,但这与我的情况无关。在我的例子中,src类没有被JAR化,但只有当我包含一个外部JAR文件时才被JAR化。没有其他错误。请参阅上面关于此问题的最新更新是的,JAR任务出于未知原因向JAR包添加了两次类文件,因此我使用了duplicate=“preserve”&update=“true”属性来防止重复<代码>