GeoNames和JDOM在收缩资源后请求java.rmi.RemoteException

我正在使用GeoNames Java Client自动完成Android应用中的地名:用户输入了一些字符,并显示了建议列表。
还需要库jdom-1.0.jar来解析Geonames提取的XML结果。

一切正常,除非我在 build.gradle 中添加std::function<double(double)>
在这一点上,一些关键的类迷路了,我不知道是哪一类。。。我所知道的是const&失败了,但是我不明白为什么为什么会失败。实际上,这里请求了shrinkResources true,但是Android不支持RMI库,因此抛出了WebService.search()而不是异常堆栈跟踪。

PlaceFinder.java:

java.rmi.RemoteException

致命异常(已追溯):

ClassnotFoundException

如何解决这个双层问题?

youkuan 回答:GeoNames和JDOM在收缩资源后请求java.rmi.RemoteException

我仍然不知道shrinkResources删除了哪个基本类或方法,但是经过数小时的尝试,我发现的解决方案只是添加到 proguard-rules.pro 规则中:

-keep class org.jdom.input.* { *; }

就是这样。


与此同时,我还发现可以将JDOM升级到与GeoNames兼容的最新版本。不用使用GeoNames提供的 jdom-1.0.jar ,而是添加到 build.gradle 依赖项:

implementation 'org.jdom:jdom:1.1.3'

在这种情况下,也需要上面的ProGuard规则。

JDOM 2似乎不再与GeoNames 1.1.14兼容。

本文链接:https://www.f2er.com/2712033.html

大家都在问