Android Studio 3.1更新后,项目无法构建:程序类型已存在:com.sun.activation.registries.LineTokenizer。

5

我刚刚将我的Android Studio升级到3.1版本,但遇到了一个未知的错误信息:程序类型已存在:com.sun.activation.registries.LineTokenizer

> :testeapn:transformClassesWithDexBuilderForDebug AGPBI:
> {"kind":"error","text":"Program type already present: com.sun.activation.registries.LineTokenizer","sources":[{}],"tool":"D8"}
> :testeapn:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED
> 
> FAILURE: Build failed with an exception.
> 
> * What went wrong: Execution failed for task ':testeapn:transformDexArchiveWithExternalLibsDexMergerForDebug'.

经过大量调查后,我意识到问题出在javax.mail库上。因此,我删除了所有与该库相关的.jar文件和提及,并重新构建了应用程序,但我也因此删除了我的应用程序中的该功能。

现在我需要让我的应用程序再次发送邮件,但我找不到如何实现这一点,并请求您的帮助。

我在Google上搜寻了很多,并在https://javaee.github.io/javamail/Android上找到了新信息(至少对我来说是新的):我们不再需要添加additionnal.jarmail.jaractivation.jar,而是必须添加新的依赖项:

implementation 'com.sun.mail:android-mail:1.6.1'
implementation 'com.sun.mail:android-activation:1.6.1'

但是,把这些代码添加到我的 app.gradle 中后,没有写任何代码,我再次出现了上述错误。

有人知道这个消息是什么意思以及该怎么做吗?


1
Android版本的1.6.1发布存在一个bug,请尝试使用1.6.0版本。 - Bill Shannon
难以置信。非常感谢。经过三天的努力,应用程序又可以正常工作了。 - Joubert Vasconcelos
1个回答

4

我在从3个JAR包(additionnal.jar, mail.jaractivation.jar)升级到 com.sun.mail:android-mail:1.6.1com.sun.mail:android-activation:1.6.1 后遇到了和你一模一样的问题。我也使用的是 Android Studio 3.1。

我的解决方案是,使用稍微旧一点的版本 1.6.0 而不是 1.6.1。错误被解决了,应用程序重新构建并且正常工作。

implementation 'com.sun.mail:android-mail:1.6.0' implementation 'com.sun.mail:android-activation:1.6.0'


一些详细信息

我进行了一些调查。似乎问题在于 com.sun.mail:android-activation:1.6.1 依赖于 javax.activation:activation:1.1,而这两个包都包含 com.sun.activation.registries.* 类。这导致构建失败。

相反,在 com.sun.mail:android-activation:1.6.0 中没有这个依赖项。

依赖关系图是通过运行 gradlew :app:dependencies --configuration debugRuntimeClasspath 生成的。

  • 当使用 1.6.0

    debugRuntimeClasspath - Resolved configuration for runtime for variant: debug +--- com.sun.mail:android-mail:1.6.1 | +--- com.sun.mail:android-activation:1.6.1 | | \--- javax.activation:activation:1.1 | \--- javax.activation:activation:1.1 +--- com.sun.mail:android-activation:1.6.1 (*) +---

  • 当使用 1.6.0

    debugRuntimeClasspath - Resolved configuration for runtime for variant: debug +--- com.sun.mail:android-mail:1.6.0 | \--- com.sun.mail:android-activation:1.6.0 +--- com.sun.mail:android-activation:1.6.0

你也可以在下面的截图中看到它。

使用版本 1.6.1 时的 Android Studio 截图

虽然我想向他们的开发者提交一个缺陷报告。但是,他们的旧问题跟踪页面(https://github.com/javaee/javamail/issues)已关闭,而他们在Eclipse Foundation上的新项目页面(https://projects.eclipse.org/projects/ee4j.javamail)非常缓慢,以至于我几乎无法打开它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接