JDK Packages

March 18, 2025 ยท View on GitHub

Some helper scripts to generate lists of packages contained in a specific JDK version. It uses https://github.com/bjhargrave/java-platform-packages to generate files for bnd.

Usage Examples


# Download JDK 17
./download_jdk.sh 17 mac aarch64

# list packages for JDK17
./list_jdk_packages.sh 17 mac aarch64

# list packages for JDK17 and write into file jdk17.txt
./list_jdk_packages.sh 17 mac aarch64 > jdk17.txt

# list packages for JDK17 and write into file jdk17-onlypackages.txt
# but extract only the packages
./list_jdk_packages.sh 17 mac aarch64 | awk '/^exports / {print \$2}' > jdk17-onlypackages.txt




# list packages of JDK17 using CalculateJavaPlatformPackages.java
# outputting a .properties file for bnd / bndtools
# Source: https://github.com/bjhargrave/java-platform-packages
./list_jdk_packages_for_bnd.sh 17 mac aarch64 > "JavaSE_17.properties"

Example Outputs

The following output can be expected using the different scripts.

Example 1: Simple ouput

# list_jdk_packages.sh 17 mac aarch64

=============================
Using JDK: ./jdks-mac-aarch64/jdk-17
=============================
Run ./jdks-mac-aarch64/jdk-17/Contents/Home/bin/java
=============================
Module: java.base
=============================
java.base@17.0.14
exports java.io
exports java.lang
exports java.lang.annotation
exports java.lang.constant
exports java.lang.invoke
exports java.lang.module
exports java.lang.ref

=============================
Module: java.datatransfer
=============================
java.datatransfer@17.0.14
exports java.awt.datatransfer
requires java.base mandated
uses sun.datatransfer.DesktopDatatransferService
qualified exports sun.datatransfer to java.desktop
contains sun.datatransfer.resources

...

Example 2: Only packages

If you are only interested in the plain packages try using this:

# ./list_jdk_packages.sh 17 mac aarch64 | awk '/^exports / {print \$2}' > jdk17-onlypackages.txt

java.io
java.lang
java.lang.annotation
java.lang.constant
java.lang.invoke
java.lang.module
java.lang.ref

Example 3: bnd / Bndtools specific output

This example is specific for bnd / bndtools. It is basically a CLI wrapper around https://github.com/bjhargrave/java-platform-packages

The following creates a .properties file for placing into https://github.com/bndtools/bnd/tree/master/biz.aQute.bndlib/src/aQute/bnd/build/model (e.g. see JavaSE_17.properties)

# ./list_jdk_packages_for_bnd.sh 17 mac aarch64 > "JavaSE_17.properties"

org.osgi.framework.system.packages = \
 com.sun.jarsigner,\
 com.sun.java.accessibility.util,\
 com.sun.jdi,\
 com.sun.jdi.connect,\

jpms.modules = \
 java.base;\
  exports:List<String>='\
   java.io,\
   java.lang,\
   java.lang.annotation,\
 java.compiler;\
  exports:List<String>='\
   javax.annotation.processing,\
   javax.lang.model,\
   javax.lang.model.element,\
   javax.lang.model.type,\
   javax.lang.model.util,\
   javax.tools',\
 java.datatransfer;\
  exports:List<String>='\
   java.awt.datatransfer',\

   ...