更新到 Android Studio 3.1 后,项目未构建:程序类型已存在:com.sun.activation.registries.LineTokenizer
After update to Android Studio 3.1 the project does not build: Program type already present: com.sun.activation.registries.LineTokenizer
我刚刚将我的 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.jar、mail.jar 和 activation.jar。我们必须添加新的依赖项:
implementation 'com.sun.mail:android-mail:1.6.1'
implementation 'com.sun.mail:android-activation:1.6.1'
但是,在我的 app.gradle 中添加这些行之后,没有写一行代码,我又遇到了上述错误。
有人知道这条消息是什么意思以及该怎么做吗?
从 3 个 jar(additionnal.jar
、mail.jar
和 activation.jar
)升级到 com.sun.mail:android-mail:1.6.1
和 com.sun.mail:android-activation:1.6.1
后,我遇到了与您完全相同的问题.我也在使用 Android Studio 3.1。
我的解决方案是,不使用 1.6.1,而是使用稍旧的版本 1.6.0。错误消失,应用程序重新构建并运行。
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
您也可以在下面的屏幕截图中看到它。
Android Studio screen shot when using version 1.6.1
虽然我想向他们的开发人员发布错误报告。他们的旧 Issue Tracker 页面 (https://github.com/javaee/javamail/issues) is closed, and their new project page on Eclipse Foundation (https://projects.eclipse.org/projects/ee4j.javamail) 速度极慢,我几乎无法打开它。
我刚刚将我的 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.jar、mail.jar 和 activation.jar。我们必须添加新的依赖项:
implementation 'com.sun.mail:android-mail:1.6.1' implementation 'com.sun.mail:android-activation:1.6.1'
但是,在我的 app.gradle 中添加这些行之后,没有写一行代码,我又遇到了上述错误。
有人知道这条消息是什么意思以及该怎么做吗?
从 3 个 jar(additionnal.jar
、mail.jar
和 activation.jar
)升级到 com.sun.mail:android-mail:1.6.1
和 com.sun.mail:android-activation:1.6.1
后,我遇到了与您完全相同的问题.我也在使用 Android Studio 3.1。
我的解决方案是,不使用 1.6.1,而是使用稍旧的版本 1.6.0。错误消失,应用程序重新构建并运行。
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
您也可以在下面的屏幕截图中看到它。
Android Studio screen shot when using version 1.6.1
虽然我想向他们的开发人员发布错误报告。他们的旧 Issue Tracker 页面 (https://github.com/javaee/javamail/issues) is closed, and their new project page on Eclipse Foundation (https://projects.eclipse.org/projects/ee4j.javamail) 速度极慢,我几乎无法打开它。