我正在尝试快速入门:通过Google
Drive SDK 在Android上运行Drive
App
。我已经按照漏洞进行了处理,但是当我在设备(真实设备)中运行该应用程序时,它因以下异常而崩溃:
java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker
最后,它指向此代码第二行中的源代码:
credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);
startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER); // <- This one
我之所以感到困惑,是因为我已经按照文章指示的去做了:
我已经生成了证书
启用了API(带有证书指纹)
在Eclipse中创建和配置android项目
复制了样本(我实际上进行了复制粘贴)
当然,我更正了程序包和类名
我还添加了该应用程序的权限,甚至还包括其他权限
我什至还添加了 Google Play Android Developer API 和它的缺点。
但是当我运行该应用程序时,它仍然崩溃。所有的库似乎都很好。我想知道它是否特定于Android
APIv17,因为我的设备是APIv10和APIv15(我还添加了支持库)。
请帮忙。请原谅我的英语不好。谢谢。
我在jtwitter.jar库中遇到了同样的问题。如果您运行的是Android Studio,则必须进行清理和构建(AS暂时还没有真正做到这一点)。
转到命令行,导航到项目根目录并执行 ./gradlew clean
在您这样做之前
确保将.jar文件添加到您的/libs
文件夹中(如果您使用的是内部版本17或更高版本,则必须为libs
,而不是lib
)。右键单击并选择
添加为库…
然后,您将必须编辑build.gradle文件(位于/src
目录中)。
它看起来应该像这样:
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile files('libs/android-support-v4.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 5
targetSdkVersion 16
}
}
将dependencies
块更改为如下所示:
dependencies {
compile files('libs/android-support-v4.jar')
compile files('[path/to/.jar]')
}
然后,您可以构建并运行您的项目。
应用程序通常会通过抛出另一个异常来响应异常。 实际上,第一个异常引起第二个异常。 它可以是非常有助于用户知道什么时候一个异常导致另一个异常。 “异常链(Chained Exceptions)”帮助程序员做到这一点。 以下是Throwable中支持异常链的方法和构造函数。 Throwable getCause() Throwable initCause(Throwable) Throwable(St
你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。 如何引发异常 例13.2 如何引发异常 #!/usr/bin/python # Filename: raising.py classShortInputException(Exception): '''A u
问题内容: 异常存储在哪里?堆,堆。如何为异常分配和释放内存?现在,如果您有多个需要处理的异常,是否创建了所有这些异常的对象? 问题答案: 我假设为异常分配的内存分配方式与所有其他对象(在堆上)分配方式相同。 这曾经是个问题,因为您不能为OutOfMemoryError分配内存,这就是直到Java 1.6之前 才没有堆栈跟踪的原因。现在,它们也为stacktrace预分配了空间。 如果您想知道在抛
因为Java编程语言不需要捕获方法或声明未检查异常(包括 RuntimeException、Error及其子类),程序员可能会试图编写只抛出未检查异常的代码,或使所有异常子类继承自RuntimeException。这两个快捷方式都允许程序员编写代码,而不必担心编译器错误,也不用担心声明或捕获任何异常。虽然这对于程序员似乎很方便,但它避开了捕获或者声明异常的需求,并且可能会导致其他人在使用您的类而产
当面对选择抛出异常的类型时,您可以使用由别人编写的异常 - Java平台提供了许多可以使用的异常类 - 或者您可以编写自己的异常类。 如果您对任何以下问题回答“是”,您应该编写自己的异常类;否则,你可以使用别人的。 你需要一个Java平台中没有表示的异常类型吗? 如果用户能够区分你的异常与由其他供应商编写的类抛出的异常吗? 你的代码是否抛出不止一个相关的异常? 如果您使用他人的例外,用户是否可以访
异常 对于异常处理,倾向使用 raise 而不是 fail。 # 差 fail SomeException, 'message' # 好 raise SomeException, 'message' 不要在带双参数形式的 raise 方法中显式指定 RuntimeError。 # 差 raise RuntimeError, 'message' # 好 - 默认就是 RuntimeError rai