使用 buildozer 打包我的 kivy 应用程序时如何修复“java.lang.module.FindException:找不到模块 java.se.ee”错误
Posted
技术标签:
【中文标题】使用 buildozer 打包我的 kivy 应用程序时如何修复“java.lang.module.FindException:找不到模块 java.se.ee”错误【英文标题】:How to fix 'java.lang.module.FindException: module java.se.ee not found' error when packaging my kivy application with buildozer 【发布时间】:2019-09-08 03:55:48 【问题描述】:我正在尝试打包我的 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 命令行工具from here 并将它放在我的根路径中,但我没有成功。
我在this post 中看到了一个解决方案,我做到了,但我没有解决错误。
我有一个安装了所有依赖项的 virtualenv。我还编辑了buildozer.spec
并且我自定义了它
Virtualenv 是:
(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 中工作
更新 Print Screen Error
【问题讨论】:
您使用的是 OpenJDK 11,您可以尝试使用 8 来代替吗? 自 JDK 9 起,se.ee 包被标记为已弃用,因此您需要相应地包含 EE 包。或者只是将您的 JAVA 降级到 9 或 8 docs.oracle.com/javase/10/docs/api/java.se.ee-summary.html 【参考方案1】:您可以通过降级 Java 或在终端中执行以下命令来解决此错误。
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
另外,不要自己下载平台工具,让 buildozer 来处理。
如果上述命令不起作用,请尝试从您的应用中删除 buildozer 文件并重新构建您的应用。
【讨论】:
我执行了上面指示的命令,但不起作用。我正在下载 Java 10 Linux x64 JDK (.tar.gz) 如何在第一个答案中告诉我@steve 并且我等待它的工作...我将具体化这个问题,在打印屏幕 启动层初始化时出错java.lang.module.FindException:找不到模块java.se.ee 我在执行你的答案时犯了错误,现在当我执行时:(flutter doctor --android-licenses),..我有这个错误:启动层java.lang初始化期间发生错误。 module.FindException:找不到模块 java.se.ee。我怎样才能恢复这个?【参考方案2】:直到几天前,如果您从 Ubuntu 存储库安装了 openjdk-11-jdk/jre,您会发现它实际上是 Java 10 的一个版本 (https://askubuntu.com/questions/1037646/why-is-openjdk-10-packaged-as-openjdk-11)。
java.se.ee 在 Java 9、10 中已弃用,在 Java 11 中删除 (https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html)
不幸的是,目前还没有简单的方法可以让 sdkmanager 或 avdmanager 等 Android 工具在 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
【讨论】:
【参考方案3】:收到错误许可不接受 SDK 构建工具等
通过安装解决
-
SDK 命令行工具
Google Play 许可服务
在 SDK 管理器 > SDK 工具中
在沮丧了 2 小时后帮助了我,并听到大家说唯一的方法是降级 Java
【讨论】:
需要说明的是,如果您之前使用'export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee''编辑了JAVA_OPTS,那么您需要将其设置回:导出 JAVA_OPTS = ''以上是关于使用 buildozer 打包我的 kivy 应用程序时如何修复“java.lang.module.FindException:找不到模块 java.se.ee”错误的主要内容,如果未能解决你的问题,请参考以下文章
Python/Kivy/Buildozer - 应用程序在 Android 中崩溃,但在 PC 上运行良好
Buildozer 编译简单的 android kivy 应用程序,但在打包时失败
Kivy buildozer Firestore 错误 - ModuleNotFoundError:没有名为“google.cloud”的模块