fourlastor-alexandria / construo

A gradle plugin to cross compile jvm projects
MIT License
9 stars 0 forks source link

Apps not running when bundles with construo #22

Closed alexstyl closed 6 months ago

alexstyl commented 7 months ago

I tried to bundle my app using construo. I set it up using:

tasks.withType<Jar> {
    manifest {
        attributes["Main-Class"] = "com.ubidrop.desktop.MainKt"
    }
}

construo {
    // name of the executable
    name.set("ubidrop")
    // human readable name, used for example in the `.app` name for MacOS
    humanName.set("Ubidrop")
    version.set(appVersionName)
    // where to put the packaged zips
    outputDir.set(rootProject.file("dist"))
    // outputs configuration
    targets {
        // MacOS ARM processors
        create<Target.MacOs>("macM1") {
            architecture.set(Target.Architecture.AARCH64)
            // MacOS needs an identifier
            identifier.set("com.ubidrop.macos")
            jdkUrl.set("https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8%2B7/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.8_7.tar.gz")
        }
        create<Target.MacOs>("macIntel") {
            architecture.set(Target.Architecture.X86_64)
            // MacOS needs an identifier
            identifier.set("com.ubidrop.macos")
            jdkUrl.set("https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8%2B7/OpenJDK17U-jdk_x64_mac_hotspot_17.0.8_7.tar.gz")
        }
    }
}

however, I cannot get the bundled app to run on my machine. Running it via terminal on my M1 using:

open /path/to/app/AppName.app/Contents/MacOS/app

gives me the following errors:

M1 Version

alexstyl@Alexs-MacBook-Pro-2 ~ % /Users/alexstyl/projects/ubidrop-desktop/dist/ubidrop-1.30.1-macM1/Ubidrop.app/Contents/MacOS/ubidrop ; exit;
thread 'main' panicked at src/main.rs:90:6:
Failed to call main method: JavaException
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Exception in thread "Thread-0" java.lang.NoClassDefFoundError: androidx/compose/ui/text/font/Font
    at com.ubidrop.desktop.MainKt.<clinit>(Main.kt:90)
Caused by: java.lang.ClassNotFoundException: androidx.compose.ui.text.font.Font
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

Inte Version

alexstyl@Alexs-MacBook-Pro-2 ~ % /Users/alexstyl/projects/ubidrop-desktop/dist/ubidrop-1.30.1-macIntel/Ubidrop.app/Contents/MacOS/ubidrop ; exit;
thread 'main' panicked at src/main.rs:62:10:
Failed to create a new JavaVM: LoadError("/Users/alexstyl/projects/ubidrop-desktop/dist/ubidrop-1.30.1-macIntel/Ubidrop.app/Contents/MacOS/jdk/lib/server/libjvm.dylib", DlOpen { desc: "dlopen(/Users/alexstyl/projects/ubidrop-desktop/dist/ubidrop-1.30.1-macIntel/Ubidrop.app/Contents/MacOS/jdk/lib/server/libjvm.dylib, 0x0005): tried: \'/Users/alexstyl/projects/ubidrop-desktop/dist/ubidrop-1.30.1-macIntel/Ubidrop.app/Contents/MacOS/jdk/lib/server/libjvm.dylib\' (mach-o file, but is an incompatible architecture (have \'arm64\', need \'x86_64\')), \'/System/Volumes/Preboot/Cryptexes/OS/Users/alexstyl/projects/ubidrop-desktop/dist/ubidrop-1.30.1-macIntel/Ubidrop.app/Contents/MacOS/jdk/lib/server/libjvm.dylib\' (no such file), \'/Users/alexstyl/projects/ubidrop-desktop/dist/ubidrop-1.30.1-macIntel/Ubidrop.app/Contents/MacOS/jdk/lib/server/libjvm.dylib\' (mach-o file, but is an incompatible architecture (have \'arm64\', need \'x86_64\'))" })
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
fourlastor commented 6 months ago

This is actually a bug in Roast, see https://github.com/fourlastor-alexandria/roast/pull/16