java - 如何从 android.jar 中删除包?

标签 java android json

我正在开发一个使用 semantics3 api 的 android 应用程序。 semantics3 库中包含对功能至关重要的 org.json 包。使用 org.json 类和函数的代码都包含在 api 中,并且独立于 android 应用程序工作。

据我所知,问题是 android.jar 还包含一个名为 org.json 的包,但它的功能不如 semantics3 org.json。尝试在应用程序中调用 semantics3 api 时,出现以下错误:

05-22 12:06:07.058: W/System.err(6108): java.lang.NoSuchMethodError: org.json.JSONTokener.<init>
05-22 12:06:07.058: W/System.err(6108):     at com.semantics3.api.Semantics3Request.fetch(Semantics3Request.java:70)
05-22 12:06:07.058: W/System.err(6108):     at com.semantics3.api.Semantics3Request.runQuery(Semantics3Request.java:143)
05-22 12:06:07.058: W/System.err(6108):     at com.semantics3.api.Semantics3Request.get(Semantics3Request.java:162)
05-22 12:06:07.058: W/System.err(6108):     at com.semantics3.api.Semantics3Request.get(Semantics3Request.java:154)
05-22 12:06:07.058: W/System.err(6108):     at com.semantics3.api.Products.getProducts(Products.java:21)
05-22 12:06:07.058: W/System.err(6108):     at com.cs194.windowshopping.ProductSearch.findKeywordSearchResults(ProductSearch.java:132)
05-22 12:06:07.058: W/System.err(6108):     at com.cs194.windowshopping.ProductSearch.queryByPicture(ProductSearch.java:66)
05-22 12:06:07.058: W/System.err(6108):     at com.cs194.windowshopping.ResultsActivity$PopulateResultList.doInBackground(ResultsActivity.java:116)
05-22 12:06:07.058: W/System.err(6108):     at com.cs194.windowshopping.ResultsActivity$PopulateResultList.doInBackground(ResultsActivity.java:1)
05-22 12:06:07.058: W/System.err(6108):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-22 12:06:07.068: W/System.err(6108):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-22 12:06:07.068: W/System.err(6108):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-22 12:06:07.068: W/System.err(6108):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-22 12:06:07.068: W/System.err(6108):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-22 12:06:07.068: W/System.err(6108):     at java.lang.Thread.run(Thread.java:841)

我想我的问题是如何确保我的应用程序使用正确的 org.json 包?或者如何从 android.jar 中删除 org.json 包,以便只存在 semantics3.jar 中的那个?

最佳答案

您可以在 GitHub 上创建该项目:https://github.com/Semantics3/semantics3-java

该软件是 MIT 许可的,因此您可以在 semantics3 中重新打包 org.json(例如,将其重命名为 org.jsonplus),然后您在 Android 上应该不会有任何问题。使用一个好的 Java IDE,这只需要一分钟左右的时间。当然,您还必须更改客户端代码才能使用新包。

关于java - 如何从 android.jar 中删除包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23816716/

相关文章:

java - Android 3Des 加密二进制输出

java - 在 Java 中将一个字符串重新排列为另一个字符串

安卓联系人搜索 : Using dialpad keys (alphabets combinations/permutations)

Android Kotlin - 将 jsonArray 转换为 Array<String>

Java.nio.channels.ServerSocketChannel -accept() 内存泄漏

java - 我在 Java 项目中陷入了一些反射(reflection)

android - Kotlin arrayList - 无法重写列表

android - 将对象列表从一个 Activity 传递到android中的另一个 Activity

javascript - 是否有一个简单的库可以将 JSON 对象呈现为树?

javascript - 通过 AJAX 将 PHP 表单变量传递给 Google Chart