当我使用Android Studio使用google v1
speech library构建测试语音应用程序时,效果很好。使用v1p1beta1
speech library,当它访问json凭据文件和旧式commons编解码器并生成以下错误时,会发生运行时错误:
JAVAlang.NoSuchMethodError:没有静态方法decodeBase64(Ljava/lang/String;)[B类Lorg/apache/commons/codec/binary/Base64;或其超类(在/system/framework/org.apache.commons.codec.binary.Base64中出现'org.apache.codec.Base64'声明)
如何使v1p1beta1
语音库不使用旧的通用库版本?
以下是gradle文件,其中引用了最新的v1p1beta1
speech和grpc
库:
apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'
ext {
supportLibraryVersion = '25.4.0'
grpcVersion = '1.4.0'
}
android {
compileSdkVersion 25
buildToolsVersion '25.0.3'
defaultConfig {
applicationId "com.google.cloud.android.speech"
targetSdkVersion 24
versionCode 1
versionName '1.0'
}
packagingOptions {
pickFirst '**'
}
signingConfigs {
release {
storeFile file(project.properties.storeFile)
storePassword project.properties.storePassword
keyAlias project.properties.keyAlias
keyPassword project.properties.keyPassword
}
}
productFlavors {
dev {
// Minimum version with platform multi-dex support
minSdkVersion 22
}
prod {
// Minimum version that can run gRPC (TLS extension)
minSdkVersion 16
}
}
buildTypes {
debug {
minifyEnabled false
multiDexEnabled true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.2'
resolutionStrategy.force "com.android.support:support-annotations:$supportLibraryVersion"
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.3.0'
}
plugins {
javalite {
artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0"
}
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
}
}
generateProtoTasks {
all().each { task ->
task.plugins {
javalite {}
grpc {
option 'lite'
}
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Support libraries
compile "com.android.support:design:$supportLibraryVersion"
compile "com.android.support:cardview-v7:$supportLibraryVersion"
compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
// Google Cloud Speech beta
compile "com.google.cloud:google-cloud-speech:0.74.0-beta"
compile "com.google.api.grpc:grpc-google-cloud-speech-v1p1beta1:0.39.0"
// gRPC
compile "io.grpc:grpc-okhttp:$grpcVersion"
compile "io.grpc:grpc-protobuf-lite:$grpcVersion"
compile "io.grpc:grpc-stub:$grpcVersion"
compile 'javax.annotation:javax.annotation-api:1.2'
protobuf 'com.google.protobuf:protobuf-java:3.3.1'
// OAuth2 for Google API
compile('com.google.auth:google-auth-library-oauth2-http:0.12.0') {
exclude module: 'httpclient'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Support libraries
//compile 'commons-codec:commons-codec:1.11'
compile "com.android.support:design:$supportLibraryVersion"
compile "com.android.support:cardview-v7:$supportLibraryVersion"
compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
// Google Cloud Speech beta
compile "com.google.cloud:google-cloud-speech:0.74.0-beta"
compile "com.google.api.grpc:grpc-google-cloud-speech-v1p1beta1:0.39.0"
// gRPC
compile "io.grpc:grpc-okhttp:$grpcVersion"
compile "io.grpc:grpc-protobuf-lite:$grpcVersion"
compile "io.grpc:grpc-stub:$grpcVersion"
compile 'javax.annotation:javax.annotation-api:1.2'
protobuf 'com.google.protobuf:protobuf-java:3.3.1'
// OAuth2 for Google API
compile('com.google.auth:google-auth-library-oauth2-http:0.12.0') {
exclude module: 'httpclient'
}
以下是堆栈跟踪错误输出:
原因:java。lang.NoSuchMethodError:没有静态方法decodeBase64(Ljava/lang/String;)[B在课堂上
那个版本的库似乎有问题。以下是@ajaaym的变通方法:
从依赖关系中删除:
compile "com.google.api.grpc:grpc-google-cloud-speech-v1p1beta1:0.39.0"
添加以下代码:
FixedCredentialsProvider fixedCredentialsProvider = FixedCredentialsProvider.create(GoogleCredentials.create(null));
try(SpeechClient client = SpeechClient.create(SpeechSettings.newBuilder().setCredentialsProvider(fixedCredentialsProvider).build())) {
} catch (IOException e) {
e.printStackTrace();
}
我建议使用最新的可用库
rank ▲ ✰ vote url 31 549 117 733 url 静态方法 Python有没有静态方法使我可以不用实例化一个类就可以调用,像这样: ClassName.StaticMethod ( ) 是的,用静态方法装饰器 class MyClass(object): @staticmethod def the_static_method(x): pri
我们可以把一个方法赋值给类的函数本身,而不是赋给它的 "prototype"。这样的方法被称为 静态的(static)。 在一个类中,它们以 static 关键字开头,如下所示: class User { static staticMethod() { alert(this === User); } } User.staticMethod(); // true 这实际上跟直接将其
问题内容: 到目前为止,我有以下代码: } 当我尝试在末尾设置double 时,出现错误消息“无法对非静态方法进行静态引用”。它说解决方法是也使该方法静态化,但是我的教授告诉我不要将该字段静态化。有一个简单的解决方案我只是想念吗? 问题答案: 静态方法属于该类,非静态方法属于该类的 实例 。 当您从呼叫时,您会收到错误消息,因为它与任何实例都没有关联。 您需要创建该类的实例: 然后,您可以调用实例
PowerMockito.when(ConnectionFactory.getConn(“ABC”).getCurrentStatus()).thenReturn(ConnectionStatus.Connected); 对于上面的陈述,我得到了一个NPE。 我在junit测试类的开头已经有@PrepareForTest({fxallConnectionFactory.class,Connecti
我正在尝试用Java编写下面用Kotlin编写的代码。我无法创建DefaultElementsAdapter,因为我无法获得正确的语法。 我无法获得正确的Java代码 Kotlin班是这样的 我正在尝试使用图书馆https://github.com/m7mdra/HtmlRecycler
我正在使用ChrisJenx的书法库。今天早上突然我的项目开始抛出奇怪的错误。有人知道吗?我还尝试了查看TintTypeArray.java:119。gradle缓存中的有getFont方法,它是v26.0.2,但在sdk/附加项中没有,它是v25.3.1。我认为gradle缓存代码将用于此,但它仍然是抛出错误。请帮助。 Logcat: 12-06 16:52:40.516 18533-18533