Currently I’m stuck again where I want to test the packaged installer with added FP3 support.
I’ve run ./gradlew dist
which creates build/distributions/easyInstaller-linux-x64.zip
When I unzip that archive and run easy-installer
from the bin
subdirectory, the installer comes up and I can proceed to the screen where my FP3 gets detected.
But then the ‘Continue’ button is greyed out and the console shows an error:
Exception in thread "JavaFX Application Thread" java.lang.IllegalAccessError: class org.yaml.snakeyaml.TypeDescription (in module Easy.installer.merged.module) cannot access class java.util.logging.Logger (in module java.logging) because module Easy.installer.merged.module does not read module java.logging
at Easy.installer.merged.module/org.yaml.snakeyaml.TypeDescription.<clinit>(Unknown Source)
at Easy.installer.merged.module/org.yaml.snakeyaml.constructor.Constructor.<init>(Unknown Source)
at Easy.installer.merged.module/org.yaml.snakeyaml.constructor.Constructor.<init>(Unknown Source)
at Easy.installer.merged.module/org.yaml.snakeyaml.Yaml.<init>(Unknown Source)
at ecorp.easy.installer/ecorp.easy.installer.threads.ThreadFactory.loadYAMLFile(Unknown Source)
at ecorp.easy.installer/ecorp.easy.installer.threads.ThreadFactory.changeMould(Unknown Source)
at ecorp.easy.installer/ecorp.easy.installer.controllers.MainWindowController.setDevice(Unknown Source)
at ecorp.easy.installer/ecorp.easy.installer.controllers.subcontrollers.DeviceDetectedController.lambda$startDetection$0(Unknown Source)
at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Unknown Source)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
at javafx.base/javafx.event.Event.fireEvent(Unknown Source)
at javafx.graphics/javafx.concurrent.EventHelper.fireEvent(Unknown Source)
at javafx.graphics/javafx.concurrent.Task.fireEvent(Unknown Source)
at javafx.graphics/javafx.concurrent.Task.setState(Unknown Source)
at javafx.graphics/javafx.concurrent.Task$TaskCallable.lambda$call$1(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(Unknown Source)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
I’m not familiar with the Java module concept. It seems I need to grant access to module java.logging
for module org.yaml.snakeyaml
(or for the entire bundled application?).
But I don’t know how to do that. My naive though was to try something like
opens java.logging to org.yaml.snakeyaml;
in module-info.java, but that gives an error:
> Task :compileJava
/x01/user/ingo/FP3/eelo/easy-installer/src/main/java/module-info.java:32: warning: package is empty or does not exist: java.logging
opens java.logging to org.yaml.snakeyaml;
^
Any idea how to fix this?
Edit: Not sure if that is a good solution, but it works when I add mergedModule
setting as below in build.gradle
:
jlink {
imageZip = project.file("${buildDir}/distributions/${appPackaging}.zip")
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
mergedModule {
requires "java.logging"
}
[...]
}
Unfortunately then the next error is when wiping the user data with fastboot -w
:
/x01/user/ingo/FP3/eelo/linux-installer/bin/adb/mke2fs failed with status 1
fastboot: error: Cannot generate image for userdata
So I also need to package mke2fs
.