Nginx Unit: Java modules fails to build (and failed patch)

kristian

Verified User
Joined
Nov 4, 2005
Messages
439
Location
Norway
We're testing out Nginx Unit, and can't get the Java module to build. This is on a Debian 11 server, freshly installed.

Code:
# dpkg -l | grep jdk
ii  openjdk-17-jdk:amd64              17.0.4+8-1~deb11u1             amd64        OpenJDK Development Kit (JDK)
ii  openjdk-17-jdk-headless:amd64     17.0.4+8-1~deb11u1             amd64        OpenJDK Development Kit (JDK) (headless)
ii  openjdk-17-jre:amd64              17.0.4+8-1~deb11u1             amd64        OpenJDK Java runtime, using Hotspot JIT
ii  openjdk-17-jre-headless:amd64     17.0.4+8-1~deb11u1             amd64        OpenJDK Java runtime, using Hotspot JIT (headless)

Code:
# ls -l /usr/lib/jvm/
total 8
lrwxrwxrwx 1 root root   21 Jul 22 23:02 java-1.17.0-openjdk-amd64 -> java-17-openjdk-amd64
drwxr-xr-x 9 root root 4096 Dec  6 13:37 java-17-openjdk-amd64
drwxr-xr-x 2 root root 4096 Dec  6 13:37 openjdk-17

Extract from the ./build unit output:
Code:
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-core
  ca-certificates-java fontconfig fonts-dejavu-extra gtk-update-icon-cache
  hicolor-icon-theme java-common libasound2 libasound2-data libatk-bridge2.0-0
  libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data
  libatspi2.0-0 libcairo-gobject2 libcairo2 libdatrie1 libdrm-amdgpu1
  libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2
  libfontenc1 libfribidi0 libgail-common libgail18 libgdk-pixbuf-2.0-0
  libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgif7 libgl1 libgl1-mesa-dri
  libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgraphite2-3 libgtk2.0-0
  libgtk2.0-bin libgtk2.0-common libharfbuzz0b liblcms2-2 libllvm11 libnspr4
  libnss3 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0
  libpcsclite1 libpixman-1-0 librsvg2-2 librsvg2-common libthai-data libthai0
  libvulkan1 libwayland-client0 libx11-xcb1 libxaw7 libxcb-dri2-0
  libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-render0
  libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcomposite1
  libxcursor1 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxkbfile1
  libxmu6 libxrandr2 libxrender1 libxshmfence1 libxtst6 libxv1 libxxf86dga1
  libxxf86vm1 libz3-4 mesa-vulkan-drivers openjdk-17-jdk-headless
  openjdk-17-jre openjdk-17-jre-headless x11-utils
Suggested packages:
  default-jre libasound2-plugins alsa-utils gvfs liblcms2-utils pcscd
  librsvg2-bin openjdk-17-demo openjdk-17-source visualvm libnss-mdns
  fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei
  | fonts-wqy-zenhei fonts-indic mesa-utils
The following NEW packages will be installed:
  adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-core
  ca-certificates-java fontconfig fonts-dejavu-extra gtk-update-icon-cache
  hicolor-icon-theme java-common libasound2 libasound2-data libatk-bridge2.0-0
  libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data
  libatspi2.0-0 libcairo-gobject2 libcairo2 libdatrie1 libdrm-amdgpu1
  libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2
  libfontenc1 libfribidi0 libgail-common libgail18 libgdk-pixbuf-2.0-0
  libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgif7 libgl1 libgl1-mesa-dri
  libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgraphite2-3 libgtk2.0-0
  libgtk2.0-bin libgtk2.0-common libharfbuzz0b liblcms2-2 libllvm11 libnspr4
  libnss3 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0
  libpcsclite1 libpixman-1-0 librsvg2-2 librsvg2-common libthai-data libthai0
  libvulkan1 libwayland-client0 libx11-xcb1 libxaw7 libxcb-dri2-0
  libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-render0
  libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcomposite1
  libxcursor1 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxkbfile1
  libxmu6 libxrandr2 libxrender1 libxshmfence1 libxtst6 libxv1 libxxf86dga1
  libxxf86vm1 libz3-4 mesa-vulkan-drivers openjdk-17-jdk
  openjdk-17-jdk-headless openjdk-17-jre openjdk-17-jre-headless x11-utils
0 upgraded, 97 newly installed, 0 to remove and 40 not upgraded.

[...lots of installing of packages here...]

Setting up libatk-wrapper-java-jni:amd64 (0.38.0-2+deb11u1) ...
Setting up ca-certificates-java (20190909) ...
head: cannot open '/etc/ssl/certs/java/cacerts' for reading: No such file or directory
Adding debian:TWCA_Root_Certification_Authority.pem
Adding debian:Staat_der_Nederlanden_Root_CA_-_G3.pem

[...]

0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

/etc/ca-certificates/update.d/jks-keystore: 82: java: not found
E: /etc/ca-certificates/update.d/jks-keystore exited with code 1.
done.
Setting up openjdk-17-jre-headless:amd64 (17.0.4+8-1~deb11u1) ...
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jpackage to provide /usr/bin/jpackage (jpackage) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Setting up openjdk-17-jre:amd64 (17.0.4+8-1~deb11u1) ...
Setting up openjdk-17-jdk-headless:amd64 (17.0.4+8-1~deb11u1) ...
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jar to provide /usr/bin/jar (jar) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jarsigner to provide /usr/bin/jarsigner (jarsigner) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/javac to provide /usr/bin/javac (javac) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/javadoc to provide /usr/bin/javadoc (javadoc) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/javap to provide /usr/bin/javap (javap) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jcmd to provide /usr/bin/jcmd (jcmd) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jdb to provide /usr/bin/jdb (jdb) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jdeprscan to provide /usr/bin/jdeprscan (jdeprscan) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jdeps to provide /usr/bin/jdeps (jdeps) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jfr to provide /usr/bin/jfr (jfr) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jimage to provide /usr/bin/jimage (jimage) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jinfo to provide /usr/bin/jinfo (jinfo) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jlink to provide /usr/bin/jlink (jlink) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jmap to provide /usr/bin/jmap (jmap) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jmod to provide /usr/bin/jmod (jmod) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jps to provide /usr/bin/jps (jps) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jrunscript to provide /usr/bin/jrunscript (jrunscript) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jshell to provide /usr/bin/jshell (jshell) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jstack to provide /usr/bin/jstack (jstack) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jstat to provide /usr/bin/jstat (jstat) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jstatd to provide /usr/bin/jstatd (jstatd) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/serialver to provide /usr/bin/serialver (serialver) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode
Setting up openjdk-17-jdk:amd64 (17.0.4+8-1~deb11u1) ...
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode
Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.2+dfsg-1+deb11u1) ...
ERROR: Unknown restart option 'automatically'!
configuring Java module
using java.home "/usr/lib/jvm/java-17-openjdk-amd64"

./configure: error: Java home directory not found.

make: *** No rule to make target 'java17-install'.  Stop.

It almost looks like there's no support for Java 17, but https://unit.nginx.org/installation/ claims "8 or later" is supported. The error about Java home directory confuses me. If it refers to the directory given just above, it does exist (as seen in the code snippet near the top in this post).

There's also a failed patch at the start, I don't know if this is related, or a completely different problem:

Code:
[...]
Found /usr/local/directadmin/custombuild/unit-1.28.0.tar.gz
Extracting /usr/local/directadmin/custombuild/unit-1.28.0.tar.gz...
Patching unit for per-user process grouping
patching file ./src/nxt_process.c
Hunk #1 FAILED at 76.
1 out of 1 hunk FAILED -- saving rejects to file ./src/nxt_process.c.rej
Configuring unit-1.28.0
[...]

Any ideas on how to fix this?
 
A recent rebuild of unit now includes Java, so I guess this was some kind of bug somewhere. The patch still fails to apply.
 
I spoke too soon. Java is in the dropdown, but actually trying to add gives this error:

Code:
Reconfiguration Error: Invalid configuration.
Detail: The module to run "java" is not found among the available application modules.
 
Back
Top