这非常令人沮丧......非常感谢任何帮助。
请不要假设我没有提及此问题的先前帖子。我做过并尝试过在这些帖子中提出的所有建议多次解决这个问题,但无济于事,尽管其他人已发布它为他们工作。
这是问题所在。
我添加了两个jar文件,它们是json-rpc2协议的实现。它们从以下位置下载。
http://software.dzhuvinov.com//download.html#download-jsonrpc2client
库文件是:
jsonrpc2碱基1.35.jar jsonrpc2-客户1.14.4.jar
我将它们添加到libs文件夹中,然后通过在工作室中右键单击它们来添加这些库。我在项目的build.gradle中添加了依赖项。我清理并建造了这个项目。请注意,所有这些时候编译器都会识别库引用并且构建成功。现在问题出现了...在编码期间和编译期间正确识别的相同库,在运行时不会工作。我得到以下No Class Found错误。请将剩余的头发保存在我的头上。感谢。
--------- beginning of crash
com.example.admin.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.admin.myapplication, PID: 1877
java.lang.NoClassDefFoundError: com.thetransactioncompany.jsonrpc2.JSONRPC2Request
at com.example.admin.myapplication.MainActivity.accessWebService(MainActivity.java:154)
at com.example.admin.myapplication.MainActivity$1.onClick(MainActivity.java:55)
at android.view.View.performClick(View.java:4756)
at android.view.View$PerformClick.run(View.java:19749)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
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:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
以下是build.gradle文件的内容。
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.admin.myapplication"
minSdkVersion 5
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile files('libs/jsonrpc2-base-1.35.jar')
compile files('libs/jsonrpc2-client-1.14.4.jar')
}
答案 0 :(得分:1)
@Jacky感谢您提供分析我的代码的建议。幸运的是,在我发布上一次回复和你发布后续报价之间,我煞费苦心地经历了Google和Stackoverflow搜索热潮,并找到了解决方案。
我上面发布的代码需要进行3次更新才能克服顽固的NoClassDefFound错误。
将“依赖项”脚本更改为以下内容:
依赖{ 编译fileTree(dir:'libs',包括:'* .jar')
关键区别,我认为是不起眼的“包含”关键字。
在项目主目录中使用命令行中的“gradlew clean”和“gradlew build”命令。
如果出现“lint”错误,请将以下代码添加到build.gradle中,然后重试第2步。
lintOptions { abortOnError为false }
当然,解决此问题的功劳归功于以前的Stackoverflow帖子:
答案 1 :(得分:0)
此错误java.lang.NoClassDefFoundError
不是java.lang.ClassNotFoundException
因此它仅在运行时发生,而不是在构建时间内发生,就像某些评论所怀疑的那样。
主要原因可能是您的应用程序类路径已毁坏。
为简单起见,请使用android studio中的内置工具添加jar文件:
1)将jar文件放在libs目录中。
2)文件>>项目结构......(或Ctrl + Alt + Shift + S)>>依赖性>>在libs中添加两个jar文件>>行