├── .gitignore ├── flathub.json ├── .editorconfig ├── org.freedesktop.Sdk.Extension.openjdk17.appdata.xml ├── patches ├── 0001-Avoid-requiring-pcsc-development-files-at-runtime.patch ├── 0002-java-remove-version-build.patch └── 0003-Allow-ccache-to-be-handled-by-GCC-wrappers.patch ├── README.md ├── extract_cacerts.sh └── org.freedesktop.Sdk.Extension.openjdk17.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | .flatpak-builder 2 | builddir 3 | repo 4 | -------------------------------------------------------------------------------- /flathub.json: -------------------------------------------------------------------------------- 1 | { 2 | "skip-icons-check": true 3 | } 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.yaml] 4 | max_line_length = 1000 5 | -------------------------------------------------------------------------------- /org.freedesktop.Sdk.Extension.openjdk17.appdata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | org.freedesktop.Sdk.Extension.openjdk17 5 | CC0-1.0 6 | 0BSD AND Apache-1.1 AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND FTL AND GPL-2.0 AND GPL-2.0-with-classpath-exception AND IJG AND ISC AND LGPL-2.1-or-later AND MIT AND MPL-2.0 AND RSA-MD AND SAX-PD AND W3C AND Zlib 7 | OpenJDK 17 SDK Extension 8 | The LTS (long term support) version of the OpenJDK JRE and JDK 9 | 10 | 11 | This SDK extension allows the building and running of Java-based applications. 12 | 13 | 14 | https://openjdk.java.net/ 15 | https://bugs.openjdk.java.net/ 16 | Mat Booth 17 | mat.booth@gmail.com 18 | 19 | -------------------------------------------------------------------------------- /patches/0001-Avoid-requiring-pcsc-development-files-at-runtime.patch: -------------------------------------------------------------------------------- 1 | From c9230ce05d9596df22443d564a03d8de63f137d6 Mon Sep 17 00:00:00 2001 2 | From: Mat Booth 3 | Date: Mon, 13 Sep 2021 15:44:32 +0100 4 | Subject: [PATCH] Avoid requiring pcsc development files at runtime 5 | 6 | JDK should try to use the versioned name of the .so instead of the 7 | unversioned name 8 | --- 9 | .../unix/classes/sun/security/smartcardio/PlatformPCSC.java | 4 ++-- 10 | 1 file changed, 2 insertions(+), 2 deletions(-) 11 | 12 | diff --git a/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java b/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java 13 | index 38fa3da9e..12086acac 100644 14 | --- a/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java 15 | +++ b/src/java.smartcardio/unix/classes/sun/security/smartcardio/PlatformPCSC.java 16 | @@ -46,8 +46,8 @@ class PlatformPCSC { 17 | 18 | private final static String PROP_NAME = "sun.security.smartcardio.library"; 19 | 20 | - private final static String LIB1 = "/usr/$LIBISA/libpcsclite.so"; 21 | - private final static String LIB2 = "/usr/local/$LIBISA/libpcsclite.so"; 22 | + private final static String LIB1 = "/usr/$LIBISA/libpcsclite.so.1"; 23 | + private final static String LIB2 = "/usr/local/$LIBISA/libpcsclite.so.1"; 24 | private final static String PCSC_FRAMEWORK = "/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC"; 25 | 26 | PlatformPCSC() { 27 | -- 28 | 2.31.1 29 | 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SDK Extension for OpenJDK 17 2 | 3 | This extension contains the OpenJDK 17 Java Runtime Environment (JRE) and Java Developement Kit (JDK). 4 | 5 | OpenJDK 17 is the previous long-term support (LTS) version. 6 | 7 | For the current LTS version, see the [OpenJDK 21](https://github.com/flathub/org.freedesktop.Sdk.Extension.openjdk21) extension. 8 | 9 | For the current latest (non-LTS) version, see the [OpenJDK](https://github.com/flathub/org.freedesktop.Sdk.Extension.openjdk) extension. 10 | 11 | ## Usage 12 | 13 | You can bundle the JRE with your Flatpak application by adding this SDK extension to your Flatpak manifest and calling the install.sh script. For example: 14 | 15 | ```yaml 16 | app-id: com.example.myapp 17 | runtime: org.freedesktop.Platform 18 | runtime-version: '25.08' 19 | sdk: org.freedesktop.Sdk 20 | sdk-extensions: 21 | - org.freedesktop.Sdk.Extension.openjdk17 22 | command: myapp 23 | 24 | finish-args: 25 | - --socket=x11 26 | - --share=ipc 27 | - --env=PATH=/app/jre/bin:/app/bin:/usr/bin 28 | - --env=JAVA_HOME=/app/jre 29 | # ... 30 | 31 | modules: 32 | - name: openjdk 33 | buildsystem: simple 34 | build-commands: 35 | - /usr/lib/sdk/openjdk17/install.sh 36 | 37 | - name: myapp 38 | buildsystem: simple 39 | build-options: 40 | env: 41 | PATH: /app/bin:/usr/bin:/usr/lib/sdk/openjdk17/bin 42 | JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17 43 | build-commands: 44 | - install -Dm755 -t /app/bin myapp 45 | - install -Dm644 -t /app/share/com.example.myapp myapp.jar 46 | # ... 47 | sources: 48 | - type: archive 49 | url: https://example.com/myapp/download/myapp-1.0.0.tar.gz 50 | # ... 51 | - type: script 52 | dest-filename: myapp 53 | commands: 54 | - exec java -jar /app/share/com.example.myapp/myapp.jar $@ 55 | # ... 56 | ``` 57 | -------------------------------------------------------------------------------- /patches/0002-java-remove-version-build.patch: -------------------------------------------------------------------------------- 1 | commit 2bf4f8e07bcbebbde9330d9c9e6906c588ec6f19 2 | Author: Martin Pilarski 3 | Date: Thu Feb 15 20:34:30 2024 +0100 4 | 5 | Avoid unsetting of VERSION_BUILD by removing corresponding code. 6 | VERSION_BUILD gets set via make/conf/version-numbers.conf. 7 | 8 | diff --git a/make/autoconf/jdk-version.m4 b/make/autoconf/jdk-version.m4 9 | index b75d2392980..59dc1a769a9 100644 10 | --- a/make/autoconf/jdk-version.m4 11 | +++ b/make/autoconf/jdk-version.m4 12 | @@ -257,30 +257,6 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS], 13 | fi 14 | fi 15 | 16 | - AC_ARG_WITH(version-build, [AS_HELP_STRING([--with-version-build], 17 | - [Set version 'BUILD' field (build number) @<:@not specified@:>@])], 18 | - [with_version_build_present=true], [with_version_build_present=false]) 19 | - 20 | - if test "x$with_version_build_present" = xtrue; then 21 | - if test "x$with_version_build" = xyes; then 22 | - AC_MSG_ERROR([--with-version-build must have a value]) 23 | - elif test "x$with_version_build" = xno; then 24 | - # Interpret --without-* as empty string instead of the literal "no" 25 | - VERSION_BUILD= 26 | - elif test "x$with_version_build" = x; then 27 | - VERSION_BUILD= 28 | - else 29 | - JDKVER_CHECK_AND_SET_NUMBER(VERSION_BUILD, $with_version_build) 30 | - fi 31 | - else 32 | - if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then 33 | - # Default is to not have a build number. 34 | - VERSION_BUILD="" 35 | - # FIXME: Until all code can cope with an empty VERSION_BUILD, set it to 0. 36 | - VERSION_BUILD=0 37 | - fi 38 | - fi 39 | - 40 | AC_ARG_WITH(version-feature, [AS_HELP_STRING([--with-version-feature], 41 | [Set version 'FEATURE' field (first number) @<:@current source value@:>@])], 42 | [with_version_feature_present=true], [with_version_feature_present=false]) 43 | -------------------------------------------------------------------------------- /extract_cacerts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Tool to generate a Java-style "cacerts" keystore from the installed 4 | # system certificates 5 | 6 | set -e 7 | 8 | jdk=${1:-/app/jdk} 9 | 10 | function get_alias() { 11 | local alias="" 12 | local issuer="${1// /}," 13 | # Determine which attribute to use for the alias 14 | if [[ $issuer =~ CN= ]] ; then 15 | # Use the "Common Name" if available 16 | alias=$(echo "$issuer" | sed -e 's/.*CN=\([^,]*\),.*/\1/') 17 | # Unless it's GlobalSign, because of non-uniqueness 18 | if [[ $alias == GlobalSign ]] ; then 19 | # In which case use the "Organisational Unit" instead 20 | alias=$(echo "$issuer" | sed -e 's/.*OU=\([^,]*\),.*/\1/') 21 | fi 22 | elif [[ $issuer =~ OU= ]] ; then 23 | # Use the "Organisational Unit" if CN is unavailable 24 | alias=$(echo "$issuer" | sed -e 's/.*OU=\([^,]*\),.*/\1/') 25 | else 26 | # Use the "Organisation" if CN and OU are unavailable 27 | alias=$(echo "$issuer" | sed -e 's/.*O=\([^,]*\),.*/\1/') 28 | fi 29 | # Return only acsii chars, all lowercase, all one word, just to be consistent with what p11-kit would do 30 | echo "$alias" | tr '[:upper:]' '[:lower:]' | sed -e 's/[^a-z0-9()._-]//g' 31 | } 32 | 33 | declare -A used_aliases 34 | 35 | for certificate in $(ls /etc/ssl/certs/*.pem) ; do 36 | cert=$($jdk/bin/keytool -printcert -file $certificate) 37 | issuer=$(echo "$cert" | grep '^Issuer' | cut -d' ' -f1 --complement) 38 | fprint=$(echo "$cert" | grep 'SHA1:' | cut -d' ' -f3) 39 | alias=$(get_alias "$issuer") 40 | 41 | # If this alias has already been used, add a unique digit to the end 42 | if [[ -v "used_aliases[$alias]" ]]; then 43 | original_alias="$alias" 44 | for i in {1..9}; do 45 | alias="${original_alias}$i" 46 | [[ -v "used_aliases[$alias]" ]] || break 47 | done 48 | 49 | echo "Note: renaming duplicate alias $original_alias -> $alias" >&2 50 | fi 51 | 52 | echo "Adding $fprint ($alias)" 53 | $jdk/bin/keytool -importcert -noprompt -alias $alias -storepass changeit -storetype JKS -keystore cacerts -file $certificate 54 | used_aliases["$alias"]=1 55 | done 56 | 57 | rm $jdk/lib/security/cacerts 58 | mv cacerts $jdk/lib/security/cacerts -------------------------------------------------------------------------------- /patches/0003-Allow-ccache-to-be-handled-by-GCC-wrappers.patch: -------------------------------------------------------------------------------- 1 | From fe7db9b65f1e74d3e7b9ae9659da6f1ef4edc21e Mon Sep 17 00:00:00 2001 2 | From: guihkx <626206+guihkx@users.noreply.github.com> 3 | Date: Tue, 15 Jul 2025 17:23:58 -0300 4 | Subject: [PATCH] Allow ccache to be handled by GCC wrappers 5 | 6 | This allows flatpak-builder not to fail at the configure step when 7 | invoked with the --ccache option: 8 | 9 | === 10 | $ flatpak run org.flatpak.Builder -v --install-deps-from flathub \ 11 | --arch x86_64 --delete-build-dirs --force-clean --repo repo/ \ 12 | --sandbox --ccache builddir/ org.freedesktop.Sdk.Extension.openjdk17.yaml 13 | [...] 14 | checking for gcc... /run/ccache/bin/gcc 15 | checking resolved symbolic links for CC... /usr/bin/ccache 16 | configure: Please use --enable-ccache instead of providing a wrapped compiler. 17 | configure: error: /run/ccache/bin/gcc is a symbolic link to ccache. This is not supported. 18 | configure exiting with result code 1 19 | FB: host_command_exited_cb 8189 256 20 | 21 | Error: module java: Child process exited with code 1 22 | === 23 | 24 | This patch is required because Flathub builders use --ccache now: 25 | 26 | https://github.com/flathub-infra/vorarbeiter/blob/7f2f04a562e73ba4f46044dae7c99f8e9e64a39d/justfile#L181 27 | --- 28 | make/autoconf/toolchain.m4 | 8 -------- 29 | 1 file changed, 8 deletions(-) 30 | 31 | diff --git a/make/autoconf/toolchain.m4 b/make/autoconf/toolchain.m4 32 | index 98573f965b3..680b70252b6 100644 33 | --- a/make/autoconf/toolchain.m4 34 | +++ b/make/autoconf/toolchain.m4 35 | @@ -537,14 +537,6 @@ AC_DEFUN([TOOLCHAIN_FIND_COMPILER], 36 | AC_MSG_RESULT([no symlink]) 37 | else 38 | AC_MSG_RESULT([$SYMLINK_ORIGINAL]) 39 | - 40 | - # We can't handle ccache by gcc wrappers, since we need to know if we're 41 | - # using ccache. Instead ccache usage must be controlled by a configure option. 42 | - COMPILER_BASENAME=`$BASENAME "$SYMLINK_ORIGINAL"` 43 | - if test "x$COMPILER_BASENAME" = "xccache"; then 44 | - AC_MSG_NOTICE([Please use --enable-ccache instead of providing a wrapped compiler.]) 45 | - AC_MSG_ERROR([$TEST_COMPILER is a symbolic link to ccache. This is not supported.]) 46 | - fi 47 | fi 48 | 49 | TOOLCHAIN_EXTRACT_COMPILER_VERSION([$1], [$COMPILER_NAME]) 50 | -- 51 | 2.50.1 52 | 53 | -------------------------------------------------------------------------------- /org.freedesktop.Sdk.Extension.openjdk17.yaml: -------------------------------------------------------------------------------- 1 | id: org.freedesktop.Sdk.Extension.openjdk17 2 | branch: '25.08' 3 | runtime: org.freedesktop.Sdk 4 | runtime-version: '25.08' 5 | build-extension: true 6 | sdk: org.freedesktop.Sdk 7 | separate-locales: false 8 | cleanup: 9 | - /share/info 10 | - /share/man 11 | build-options: 12 | no-debuginfo: true 13 | strip: true 14 | prefix: /usr/lib/sdk/openjdk17 15 | env: 16 | V: '1' 17 | modules: 18 | - name: bootstrap_jdk 19 | buildsystem: simple 20 | cleanup: 21 | - '*' 22 | sources: 23 | - type: file 24 | only-arches: 25 | - x86_64 26 | url: https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.17%2B10/OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz 27 | dest-filename: java-openjdk.tar.gz 28 | sha256: 992f96e7995075ac7636bb1a8de52b0c61d71ed3137fafc979ab96b4ab78dd75 29 | x-checker-data: 30 | type: json 31 | url: https://api.adoptium.net/v3/assets/latest/17/hotspot?os=linux&architecture=x64&image_type=jdk 32 | version-query: .[0].version.semver 33 | url-query: .[0].binary.package.link 34 | versions: 35 | - ==: 17 36 | - type: file 37 | only-arches: 38 | - aarch64 39 | url: https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.17%2B10/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.17_10.tar.gz 40 | dest-filename: java-openjdk.tar.gz 41 | sha256: dc29ca6d35beb4419b4b00419b8a3dfbf5ae551e1ae2b046b516d9a579d04533 42 | x-checker-data: 43 | type: json 44 | url: https://api.adoptium.net/v3/assets/latest/17/hotspot?os=linux&architecture=aarch64&image_type=jdk 45 | version-query: .[0].version.semver 46 | url-query: .[0].binary.package.link 47 | versions: 48 | - ==: 17 49 | build-commands: 50 | - mkdir -p $FLATPAK_DEST/bootstrap-java 51 | - tar xf java-openjdk.tar.gz --strip-components=1 --directory=$FLATPAK_DEST/bootstrap-java 52 | - name: java 53 | buildsystem: autotools 54 | no-parallel-make: true 55 | config-opts: 56 | - --with-boot-jdk=/usr/lib/sdk/openjdk17/bootstrap-java 57 | - --with-jvm-variants=server 58 | - --with-version-pre= 59 | - --with-version-opt= 60 | - --with-vendor-version-string=21.9 61 | - --with-vendor-name=Flathub 62 | - --with-vendor-url=https://flathub.org 63 | - --with-vendor-bug-url=https://github.com/flathub/org.freedesktop.Sdk.Extension.openjdk17/issues 64 | - --with-debug-level=release 65 | - --with-native-debug-symbols=internal 66 | - --enable-unlimited-crypto 67 | - --with-zlib=system 68 | - --with-libjpeg=system 69 | - --with-giflib=system 70 | - --with-libpng=system 71 | - --with-lcms=system 72 | - --with-harfbuzz=system 73 | - --with-stdc++lib=dynamic 74 | - --with-extra-cxxflags=-grecord-gcc-switches -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection 75 | - --with-extra-cflags=-grecord-gcc-switches -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection 76 | - --with-extra-ldflags=-Wl,-z,relro -Wl,-z,now -Wl,--as-needed 77 | - --disable-javac-server 78 | - --disable-warnings-as-errors 79 | make-args: 80 | - LOG=info 81 | - images 82 | post-install: 83 | - (cd $FLATPAK_DEST/jvm && ln -s openjdk-17.* openjdk-17) 84 | sources: 85 | - type: git 86 | url: https://github.com/adoptium/jdk17u.git 87 | tag: jdk-17.0.17+10 88 | commit: 30ef840c3736270330fc0a26849c2456406facfe 89 | x-checker-data: 90 | type: json 91 | url: https://api.github.com/repos/adoptium/temurin17-binaries/releases/latest 92 | is-main-source: true 93 | tag-query: .tag_name 94 | - type: patch 95 | paths: 96 | - patches/0001-Avoid-requiring-pcsc-development-files-at-runtime.patch 97 | - patches/0002-java-remove-version-build.patch 98 | - patches/0003-Allow-ccache-to-be-handled-by-GCC-wrappers.patch 99 | - type: shell 100 | commands: 101 | - chmod a+x configure 102 | - sed -i -e "s|@prefix@|$FLATPAK_DEST|" make/autoconf/spec.gmk.in 103 | - git describe --match jdk-17.*+* HEAD | sed -e 's/jdk-17.*+\(\)/VERSION_BUILD=\1/' >> make/conf/version-numbers.conf 104 | - name: cacerts 105 | buildsystem: simple 106 | sources: 107 | - type: file 108 | path: extract_cacerts.sh 109 | build-commands: 110 | - ./extract_cacerts.sh $FLATPAK_DEST/jvm/openjdk-17 111 | - name: ant 112 | buildsystem: simple 113 | cleanup: 114 | - '*.bat' 115 | - '*.cmd' 116 | sources: 117 | - type: file 118 | url: http://archive.apache.org/dist/ant/binaries/apache-ant-1.10.15-bin.tar.gz 119 | dest-filename: apache-ant-bin.tar.gz 120 | sha512: d78427aff207592c024ff1552dc04f7b57065a195c42d398fcffe7a0145e8d00cd46786f5aa52e77ab0fdf81334f065eb8011eecd2b48f7228e97ff4cb20d16c 121 | x-checker-data: 122 | type: anitya 123 | project-id: 50 124 | stable-only: true 125 | is-main-source: false 126 | url-template: http://archive.apache.org/dist/ant/binaries/apache-ant-$version-bin.tar.gz 127 | build-commands: 128 | - mkdir -p $FLATPAK_DEST/ant 129 | - tar xf apache-ant-bin.tar.gz --strip-components=1 --directory=$FLATPAK_DEST/ant 130 | - ln -s $FLATPAK_DEST/ant/bin/ant $FLATPAK_DEST/bin 131 | - name: maven 132 | buildsystem: simple 133 | cleanup: 134 | - '*.bat' 135 | - '*.cmd' 136 | sources: 137 | - type: file 138 | url: http://archive.apache.org/dist/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz 139 | dest-filename: apache-maven-bin.tar.gz 140 | sha512: bcfe4fe305c962ace56ac7b5fc7a08b87d5abd8b7e89027ab251069faebee516b0ded8961445d6d91ec1985dfe30f8153268843c89aa392733d1a3ec956c9978 141 | x-checker-data: 142 | type: anitya 143 | project-id: 1894 144 | stable-only: true 145 | is-main-source: false 146 | url-template: http://archive.apache.org/dist/maven/maven-3/$version/binaries/apache-maven-$version-bin.tar.gz 147 | versions: 148 | <: 4.0.0 149 | build-commands: 150 | - mkdir -p $FLATPAK_DEST/maven 151 | - tar xf apache-maven-bin.tar.gz --strip-components=1 --exclude=jansi-native --directory=$FLATPAK_DEST/maven 152 | - ln -s $FLATPAK_DEST/maven/bin/mvn $FLATPAK_DEST/maven/bin/mvnDebug $FLATPAK_DEST/bin 153 | - name: gradle 154 | buildsystem: simple 155 | cleanup: 156 | - '*.bat' 157 | sources: 158 | - type: file 159 | url: https://services.gradle.org/distributions/gradle-9.1.0-bin.zip 160 | dest-filename: gradle-bin.zip 161 | sha256: a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806 162 | x-checker-data: 163 | type: json 164 | url: https://services.gradle.org/versions/current 165 | is-main-source: false 166 | version-query: .version 167 | url-query: .downloadUrl 168 | build-commands: 169 | - unzip -q gradle-bin.zip -d $FLATPAK_DEST 170 | - mv $FLATPAK_DEST/gradle-* $FLATPAK_DEST/gradle 171 | - ln -s $FLATPAK_DEST/gradle/bin/gradle $FLATPAK_DEST/bin 172 | - name: scripts 173 | buildsystem: simple 174 | sources: 175 | - type: script 176 | commands: 177 | - mkdir -p /app/jre/bin 178 | - cd /usr/lib/sdk/openjdk17/jvm/openjdk-17 179 | - cp -ra conf lib release /app/jre/ 180 | - rm /app/jre/lib/src.zip /app/jre/lib/ct.sym 181 | - cp -ra bin/{java,keytool,rmiregistry} /app/jre/bin 182 | dest-filename: install.sh 183 | - type: script 184 | commands: 185 | - mkdir -p /app/jdk/ 186 | - cd /usr/lib/sdk/openjdk17/jvm/openjdk-17 187 | - cp -ra bin conf include jmods lib release /app/jdk/ 188 | dest-filename: installjdk.sh 189 | - type: script 190 | commands: 191 | - export JAVA_HOME=/usr/lib/sdk/openjdk17/jvm/openjdk-17 192 | - export PATH=$PATH:/usr/lib/sdk/openjdk17/bin 193 | dest-filename: enable.sh 194 | build-commands: 195 | - cp enable.sh install.sh installjdk.sh /usr/lib/sdk/openjdk17/ 196 | - name: appdata 197 | buildsystem: simple 198 | sources: 199 | - type: file 200 | path: org.freedesktop.Sdk.Extension.openjdk17.appdata.xml 201 | build-commands: 202 | - mkdir -p ${FLATPAK_DEST}/share/metainfo 203 | - cp org.freedesktop.Sdk.Extension.openjdk17.appdata.xml ${FLATPAK_DEST}/share/metainfo 204 | --------------------------------------------------------------------------------
11 | This SDK extension allows the building and running of Java-based applications. 12 |