Android studio 版本更新导致类丢失

2020-10-16 11:36:07 +08:00
 QBugHunter
3.1 升级到 4.1,代码没动,然后编译通不过,提示

java.lang.ClassNotFoundException: Class javax.servlet.http.Cookie not found

然后网上查了一下,说我的 servlet 的版本不对,要 3.0 的,我的应该是 2.x 的,然后要修改 opt.xml 文件里的配置,我找了半天实在没找到这个文件的位置

还有个答案是把 serlet-pai-3.1.jar 添加进 dependencies 里,但我看他给的 dependencies 貌似和我的不太一样。。。

请问如何解决这个类未发现的问题
923 次点击
所在节点    问与答
13 条回复
chenjiajia9411
2020-10-16 12:38:45 +08:00
你不会还在依赖 Apache HTTP Client 吧,那个早就在 API 23 弃用了……
https://developer.android.com/about/versions/marshmallow/android-6.0-changes#behavior-apache-http-client
然后在 API 29 的时候被彻底移除了: https://developer.android.com/about/versions/pie/android-9.0-changes-28#apache-p
QBugHunter
2020-10-16 12:44:38 +08:00
@chenjiajia9411
那怎么从工程里找到这个依赖,然后移出呢?我看了。gredle 文件没这个类的依赖
chenjiajia9411
2020-10-16 12:50:05 +08:00
@QBugHunter #2 这个依赖本来是系统库,不需要特地配置。你要做的是在代码里搜索还在引用 org.apache.http 或者 javax.servlet.http 的地方,读懂他们是干啥的,然后用适当的现代化的库和类去替换,或者就干脆放弃升级。
QBugHunter
2020-10-16 13:02:12 +08:00
@chenjiajia9411
求教怎么升级。。。。我在网上查到就是说版本不对,但网上说要改一个 opt.xml 的文件,我找不到,
我在整个工程里搜索 javac.servlet.http 显示没有结果
QBugHunter
2020-10-16 13:04:06 +08:00
@chenjiajia9411
或者说如何让工程不使用这个类
chenjiajia9411
2020-10-16 13:07:45 +08:00
@QBugHunter #5 ……没有具体的项目比较难看的啊,你搜的办法应该都是后端 Java EE 开发的办法,不适用于安卓的。类名搜索不到的话应该是第三方库的问题了,可以排查一遍第三方库的依赖或者源码看看(虽然我没记错的话 IDEA 的搜索可以包括第三方库的)。
如果你只是想干脆先让编译通过的话,试试在依赖里加一个“ compileOnly group: 'javax.servlet:javax.servlet-api:4.0.1' ”?
chenjiajia9411
2020-10-16 13:08:31 +08:00
@chenjiajia9411 #6 compileOnly 'javax.servlet:javax.servlet-api:4.0.1'
不行的话把 compileOnly 换成 implementation.
ChenFanlin
2020-10-16 13:10:31 +08:00
歪个楼, 前几天升到了 4.1, 调试的时候很多类的字段都捕获不到报异常, 有些断点也进不去, app 也常常卡死, 已经退回 4.0.2 了
chenjiajia9411
2020-10-16 13:16:39 +08:00
@ChenFanlin #8 我是觉得升级看自己,有需要的功能就升级,像我需要 Java 8 library desugaring 所以才要升级到 4.0,就算是要兼容 Android 11 的包可见性更改,谷歌的办法也是提供就地更新而没有要求所有人都要升级到 4.1: https://developer.android.com/studio/releases/gradle-plugin#4-0-0
HongJay
2020-10-16 13:18:51 +08:00
4.1 是真的搞
QBugHunter
2020-10-16 13:20:50 +08:00
@ChenFanlin
我也歪一下,怎么退回以前的版本。。。。
ChenFanlin
2020-10-16 13:37:18 +08:00
@QBugHunter #11 https://developer.android.com/studio/archive?hl=zh-cn 旧版安装包
@chenjiajia9411 #9 比较喜欢升级最新版, 以前也没遇到过很大的问题
chenjiajia9411
2020-10-16 13:38:48 +08:00
@QBugHunter #11 循序渐进升级也是个办法,先从 3.2 升起来,慢慢一步步过渡到 4.1.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/715557

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX