Javax内容不可访问
我尝试运行android应用程序时出现运行时错误,原因是导入了允许我使用Watson服务的软件包 'com.ibm.watson.developer_cloud:JavaSDK:2.9.0' 事实上,当我使用与此包相关的内容时,出现的错误是:Javax内容不可访问,java,android,import,ibm-watson,verifyerror,Java,Android,Import,Ibm Watson,Verifyerror,我尝试运行android应用程序时出现运行时错误,原因是导入了允许我使用Watson服务的软件包 'com.ibm.watson.developer_cloud:JavaSDK:2.9.0' 事实上,当我使用与此包相关的内容时,出现的错误是: E/dalvikvm: Could not find class 'javax.naming.InitialContext', referenced from method com.ibm.watson.developer_cloud.util.Crede
E/dalvikvm: Could not find class 'javax.naming.InitialContext', referenced from method com.ibm.watson.developer_cloud.util.CredentialUtils.getKeyUsingJNDI
对应的stacktrace为:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: semantic.myapplication, PID: 29120
java.lang.VerifyError: com/ibm/watson/developer_cloud/util/CredentialUtils
at….
我查找了这个错误的真正问题,发现在出现错误的文件“CredentialUtils.java”中,这三个导入未被识别(无法解析符号):
我使用Android Studio和最新版本的jdk(1.8.0.77)。这些java文件存在,我可以看到它们,但由于某些原因无法访问:javax.naming(以及其他文件夹)中的每个文件都无法导入
我怎样才能解决这个问题?我尝试导入一个包含javax.naming类的.jar文件,但没有成功。有没有办法让这些类可见
任何帮助都将不胜感激。谢谢 我认为您使用的版本早于
2.7.1
。我无法重现您的问题,我尝试了不同的配置,包括您的配置。
确保清理工作区并获取最新版本的库。
在build.gradle
中,您应该有:
compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'
这是解决您问题的方法。该修复程序是在2.7.1
版本中发布的
这就是我所做的,也为我工作:
在Android中使用Watson API的步骤您应该:
文件>新建>新建项目
next
,next
,next
和Finish
/app/build.gradle
中添加:
compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
SpeechToText service = new SpeechToText();
service.setUsernameAndPassword("<username>", "<password>");
System.out.println(service.getModels());
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
mainActivity.java
的onCreate(…)
末尾添加:
compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
SpeechToText service = new SpeechToText();
service.setUsernameAndPassword("<username>", "<password>");
System.out.println(service.getModels());
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
以及语音到文本模型列表
I/System.out: [{
I/System.out: "name": "en-US_NarrowbandModel",
I/System.out: "rate": 8000
I/System.out: }, {
I/System.out: "name": "pt-BR_BroadbandModel",
I/System.out: "rate": 16000
I/System.out: }, {
I/System.out: .... more models here
I/System.out: }, {
I/System.out: "name": "en-US_BroadbandModel",
I/System.out: "rate": 16000
I/System.out: }]
我认为您使用的版本早于
2.7.1
。我无法重现您的问题,我尝试了不同的配置,包括您的配置。
确保清理工作区并获取最新版本的库。
在build.gradle
中,您应该有:
compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'
这是解决您问题的方法。该修复程序是在2.7.1
版本中发布的
这就是我所做的,也为我工作:
在Android中使用Watson API的步骤您应该:
文件>新建>新建项目
next
,next
,next
和Finish
/app/build.gradle
中添加:
compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
SpeechToText service = new SpeechToText();
service.setUsernameAndPassword("<username>", "<password>");
System.out.println(service.getModels());
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
mainActivity.java
的onCreate(…)
末尾添加:
compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
SpeechToText service = new SpeechToText();
service.setUsernameAndPassword("<username>", "<password>");
System.out.println(service.getModels());
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
以及语音到文本模型列表
I/System.out: [{
I/System.out: "name": "en-US_NarrowbandModel",
I/System.out: "rate": 8000
I/System.out: }, {
I/System.out: "name": "pt-BR_BroadbandModel",
I/System.out: "rate": 16000
I/System.out: }, {
I/System.out: .... more models here
I/System.out: }, {
I/System.out: "name": "en-US_BroadbandModel",
I/System.out: "rate": 16000
I/System.out: }]
有一个与此相关的问题:您发布的链接与此讨论相同^^对不起,我刚才说的是谢谢您的链接!我已经将包的版本降级为2.6.0,我不再有这个问题,因为在该版本中,文件CredentialUtils不存在。但是,整个包“javax.naming”(以及javax的许多其他包)仍然无法访问和使用。这是一个常见的问题吗?是的,这是我的错,因为我没有验证在android中引入该问题的pull请求…有一个与此相关的问题:您发布的链接与此讨论相同^^抱歉,我刚才说的是谢谢您的链接!我已经将包的版本降级为2.6.0,我不再有这个问题,因为在该版本中,文件CredentialUtils不存在。但是,整个包“javax.naming”(以及javax的许多其他包)仍然无法访问和使用。这是一个常见问题吗?是的,这是我的错,因为我没有验证在android中引入该问题的pull请求…非常感谢。我应该在你回答之前回答。我最近发现我的问题更一般,与Watson API没有太大关系。事实上,在AndroidStudio的项目结构中,SDK和JDK位置是正确指定的,但是当我尝试导入“java”和“javax”包时,只有部分子目录可见。例如,“import javax”。让我只看“crypto、microedition、net、security、sql、xml”子目录-所有其他子目录(es.naming)都不可见,因为它们没有正确编译,即使我可以在“External Libraries”文件夹中看到它们。此外,我还尝试将文件路径作为build.gradle依赖项插入jdk文件夹:“编译文件('C:/Programmi/Java/jdk1.8.0_77/jre/lib/rt.jar')“。这样做,我终于可以看到java和javax的所有子文件夹,但当我尝试运行应用程序时,会出现许多问题,可能是由于与默认编译的现有库rt.jar冲突。所以我有一个更普遍的问题,与沃森服务公司无关。很抱歉,如果我第一次把问题集中在Watson服务上,但我注意到这个问题只是因为他们:)非常感谢。我应该在你回答之前回答。我最近发现我的问题更一般,与Watson API没有太大关系。事实上,在AndroidStudio的项目结构中,SDK和JDK位置是正确指定的,但是当我尝试导入“java”和“javax”包时,只有部分子目录可见。例如,“import javax”。让我只看“crypto、microedition、net、security、sql、xml”子目录-所有其他子目录(es.naming)都不可见,因为它们没有正确编译,即使我可以在“External Libraries”文件夹中看到它们。此外,我还尝试将文件路径作为build.gradle依赖项插入jdk文件夹:“编译文件('C:/Programmi/Java/jdk1.8.0_77/jre/lib/rt.jar')”。这样我终于可以看到Java和javax的所有子文件夹,但是