如何在使用buildozer打包kivy应用时修复“java.lang.module.FindException: module java.se.ee not found”错误

11

我正试图打包我的kivy应用程序(python3),但当我运行命令buildozer -v android debug时出现了以下错误。

# Cwd /home/javier/.buildozer/android/platform/android-sdk
Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.se.ee not found
# Command failed: /home/javier/.buildozer/android/platform/android-sdk/tools/bin/sdkmanager tools platform-tools
# 
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error
# Please read the full log, and search for it before
# raising an issue with buildozer itself.
# In case of a bug report, please add a full log with log_level = 2

我有这个 Java 版本。

$ java --version
openjdk 11.0.2 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)

我只下载了sdkmanager命令行工具 从这里 并将其放在我的根路径,但我没有成功。

我在这篇帖子中看到了一个解决方案,我也尝试了,但是我没有解决错误。

我有一个包含所有依赖项的虚拟环境。我还编辑了buildozer.spec并进行了自定义设置。

虚拟环境为:

(envAppSinapsis)~/AppSin$ pip freeze
certifi==2019.3.9
chardet==3.0.4
Cython==0.28.2
docutils==0.14
idna==2.8
Kivy==1.10.1
Kivy-Garden==0.1.4
psycopg2==2.7.6.1
psycopg2-binary==2.7.6.1
pygame==1.9.4.dev0
Pygments==2.3.1
requests==2.21.0
urllib3==1.24.1

我认为那个错误与JAVA有关,但我不知道具体是什么。感谢您的帮助,同时请原谅我的糟糕英语。

我正在使用Ubuntu 18操作系统

更新信息: 打印屏幕错误截图


看起来你正在使用OpenJDK 11,能否尝试改用8呢? - inclement
自JDK 9开始,se.ee包已被标记为不推荐使用,因此您需要相应地包含EE包。或者,您可以将JAVA降级至9或8版本。 - BetaDev
https://docs.oracle.com/javase/10/docs/api/java.se.ee-summary.html - BetaDev
3个回答

21

直到几天前,如果您从Ubuntu软件仓库中安装了openjdk-11-jdk/jre,您会发现它实际上是Java 10的版本(https://askubuntu.com/questions/1037646/why-is-openjdk-10-packaged-as-openjdk-11).

自Java 9、10开始,java.se.ee已被弃用(deprecated),并在Java 11中被移除(removed)(https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html)

不幸的是,目前还没有简单的方法可以使Android工具如sdkmanager或avdmanager与Java 11一起运行。

我能够使用Java 10再次在Ubuntu上运行buildozer:

  • http://jdk.java.net/java-se-ri/10下载Java 10 Linux x64 JDK (.tar.gz)
  • 解压缩:tar -xzvf jdk-10_linux-x64_bin_ri.tar.gz
  • 设置路径:export PATH=/path/to/inflated/jdk-10/bin:$PATH

13

我遇到了“SDK构建工具等的许可证未被接受”的错误。

通过安装以下内容解决:

  1. SDK命令行工具
  2. Google Play许可服务

在SDK管理器中,进入SDK工具进行安装。

在尝试了两个小时后,听取了所有人只能降级Java的建议后,这个方法帮助了我。


7
需要提醒的是,如果您之前使用“export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'”编辑过JAVA_OPTS,则需要将其设置回“export JAVA_OPTS=''”。请注意不要改变原来的意思。 - Harshfi6
你的答案是所有答案中有效的一个。似乎没有选项可以在没有许可证服务器的情况下接受许可证。 - Javasamurai

-6

您可以通过降级Java或在终端中执行以下命令来解决此错误。

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

另外,不要自己下载平台工具,让buildozer来处理。

如果上述命令无效,请尝试从您的应用程序中删除buildozer文件并重新构建您的应用程序。


1
我执行了上面指示的命令,但未起作用。我正在下载@steve在第一个答案中指示的Java 10 Linux x64 JDK(.tar.gz),并希望它能够正常工作... 我将更新问题,并展示更多信息在截图中。 - Javier Valero
2
初始化引导层时发生错误 java.lang.module.FindException: 未找到 java.se.ee 模块 - Alix
我犯了一个错误,执行了你的答案,现在当我执行 (flutter doctor --android-licenses) 时,出现了以下错误:Error occurred during initialization of boot layer java.lang.module.FindException: Module java.se.ee not found。我该如何恢复? - Reinier Garcia

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