Closed jeltedeproft closed 4 months ago
Something about the process it's starting looks wrong. I've added newlines after so it's more readable, but the original line is:
Starting process 'command 'C:\Program Files\Eclipse Adoptium\jdk-17.0.6.10-hotspot\bin\jlink.exe''. Working directory: C:\Users\Admin\Documents\GitHub\TowerOfLife\TowerOfLife\TowerOfLife\TowerOfLife\lwjgl3 Command: C:\Program Files\Eclipse Adoptium\jdk-17.0.6.10-hotspot\bin\jlink.exe --no-header-files --strip-native-commands --no-man-pages --compress=1 --strip-debug --add-modules JDK removed internal API/com.sun.tools.javac.processing,JDK removed internal API/com.sun.tools.javac.util,java.base,java.compiler,java.instrument,jdk.unsupported, --module-path C:\Users\Admin\Documents\GitHub\TowerOfLife\TowerOfLife\TowerOfLife\TowerOfLife\lwjgl3\build\construo\jdk\winX64\jdk-17.0.11+9\jmods --output C:\Users\Admin\Documents\GitHub\TowerOfLife\TowerOfLife\TowerOfLife\TowerOfLife\lwjgl3\build\construo\runtime-image\lwjgl3-winX64
Starting process 'command 'C:\Program Files\Eclipse Adoptium\jdk-17.0.6.10-hotspot\bin\jlink.exe''. Working directory:
C:\Users\Admin\Documents\GitHub\TowerOfLife\TowerOfLife\TowerOfLife\TowerOfLife\lwjgl3 Command: C:\Program Files\Eclipse Adoptium\jdk-17.0.6.10-hotspot\bin\jlink.exe
--no-header-files --strip-native-commands --no-man-pages --compress=1 --strip-debug
--add-modules JDK removed internal API/com.sun.tools.javac.processing,JDK removed internal API/com.sun.tools.javac.util,java.base,java.compiler,java.instrument,jdk.unsupported,
--module-path C:\Users\Admin\Documents\GitHub\TowerOfLife\TowerOfLife\TowerOfLife\TowerOfLife\lwjgl3\build\construo\jdk\winX64\jdk-17.0.11+9\jmods
--output C:\Users\Admin\Documents\GitHub\TowerOfLife\TowerOfLife\TowerOfLife\TowerOfLife\lwjgl3\build\construo\runtime-image\lwjgl3-winX64
In particular, the --add-modules
part looks seriously wrong. I'm not sure if this could have been on the user-side at all, it looks construo-internal to me.
if I look at the code a bit, it seems this command is being created inside of CreateRuntimeImageTask.kt. More specifically in the following line the argument for --add-modules is being created
val modulesList = (modules.get() + guessModulesFromJar(javaHome)).distinct()
private fun guessModulesFromJar(javaHome: File): List<String> = ByteArrayOutputStream().use {
execOperations.exec {
setWorkingDir(jdkRoot)
standardOutput = it
commandLine(
File(javaHome, executableForOs("bin/jdeps")).absolutePath,
"--ignore-missing-deps",
"--list-deps",
jarFile.get().asFile.absolutePath
)
}
it.toByteArray().toString(Charset.defaultCharset())
}.splitToSequence("\n").map { it.trim() }.toList()
Perhaps there needs to be some additional logic to handle invalid module names gracefully
Resolved offline: we found out the issue was lombok being declared as a dependency instead of compileOnly
, changing the declaration to compileOnly
fixed the issue
This was already discussed on the libgdx discord, but I am making a ticket to keep track of it. When you have a dependency like the following
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
Then the createRuntimeImageWinX64 (haven't tested for different OS) will fail with the following error message on windows
longer stack trace :
I have tried to use the following command
But that also didn't work.
I did this with java 17, i tried with a lower java version but then it complained that construo requires java 17. Also didn't work with java 21