Solved java disappeared following upgrade to 13.2

Following a successful upgrade to 13.2 when running a java application I get the following error:

Code:
/usr/local/bin/java -jar /home/byrnejb_hll/Desktop/superbcalc.jar
java: error: no suitable JavaVMs found
java -version
java: error: no suitable JavaVMs found

pkg info -x openjdk
openjdk11-11.0.20+8.1_1
openjdk8-8.382.05.1
openjdk8-jre-8.382.05.1

# javavm
javavm: warning: The use of 'javavm' as a synonym for 'java' is deprecated
java: error: no suitable JavaVMs found

How do I get java back?
 
Is java/javavmwrapper installed? Does /usr/local/etc/javavms contain anything?

Code:
% cat /usr/local/etc/javavms
/usr/local/openjdk11/bin/java
/usr/local/openjdk8/bin/java
 
Code:
]# pkg info -x java
java-zoneinfo-2021.e
java3d-1.5.2_7
javamail-1.6.2
javavmwrapper-2.7.9

Code:
# cat /usr/local/etc/javavms
/usr/local/openjdk11/bin/java
/usr/local/openjdk8-jre/bin/java
/usr/local/openjdk8/bin/java

# ll /usr/local/openjdk*/bin/java
-r-xr-xr-x  1 root  wheel  75816 Dec 21 06:48 /usr/local/openjdk11/bin/java
-r-xr-xr-x  1 root  wheel   6000 Dec 22 18:44 /usr/local/openjdk8-jre/bin/java
-r-xr-xr-x  1 root  wheel   6000 Dec 20 22:30 /usr/local/openjdk8/bin/java

# file /usr/local/openjdk11/bin/java
/usr/local/openjdk11/bin/java: ELF 64-bit LSB pie executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 13.2, FreeBSD-style, with debug_info, not stripped

# which java
/usr/local/bin/java

# ll /usr/local/bin/java
lrwxr-xr-x  1 root  wheel  21 Jul 17  2020 /usr/local/bin/java -> /usr/local/bin/javavm

ll /usr/local/bin/javavm
-r-xr-xr-x  1 root  wheel  22510 Dec 20 20:16 /usr/local/bin/javavm

# file /usr/local/bin/javavm
/usr/local/bin/javavm: POSIX shell script, ASCII text executable

]# /usr/local/bin/javavm
javavm: warning: The use of 'javavm' as a synonym for 'java' is deprecated
java: error: no suitable JavaVMs found
 
I found the problem.
Code:
[byrnejb_hll@vhost01 ~ (master)]$ /usr/local/bin/java -jar /home/byrnejb_hll/Desktop/superbcalc.jar
java: error: no suitable JavaVMs found

[byrnejb_hll@vhost01 ~ (master)]$ env | grep -i java
JAVA_VERSION=13+

[byrnejb_hll@vhost01 ~ (master)]$ unset JAVA_VERSION

[byrnejb_hll@vhost01 ~ (master)]$ java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)

[byrnejb_hll@vhost01 ~ (master)]$ export JAVA_VERSION=13+

[byrnejb_hll@vhost01 ~ (master)]$ java -version
openjdk version "17.0.8" 2023-07-18
OpenJDK Runtime Environment (build 17.0.8+7-1)
OpenJDK 64-Bit Server VM (build 17.0.8+7-1, mixed mode, sharing)

[byrnejb_hll@vhost01 ~ (master)]$ unset JAVA_VERSION

[byrnejb_hll@vhost01 ~ (master)]$ java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)

[byrnejb_hll@vhost01 ~ (master)]$ JAVA_VERSION=13+

[byrnejb_hll@vhost01 ~ (master)]$ java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)

[byrnejb_hll@vhost01 ~ (master)]$ export JAVA_VERSION

[byrnejb_hll@vhost01 ~ (master)]$ java -version
openjdk version "17.0.8" 2023-07-18
OpenJDK Runtime Environment (build 17.0.8+7-1)
OpenJDK 64-Bit Server VM (build 17.0.8+7-1, mixed mode, sharing)

This is, to me, very odd behaviour.

However, java now appears to work for new login sessions without further user action.
 
Just a note:
Code:
pkg info -x openjdk
openjdk11-11.0.22+7.1_1
openjdk17-17.0.10+7.1_1
openjdk21-21.0.2+13.1_1
openjdk8-8.402.06.1_1
openjdk8-jre-8.402.06.1_1

If JAVA_VERSION=11+ then:
Code:
java -version
openjdk version "11.0.22" 2024-01-16
OpenJDK Runtime Environment (build 11.0.22+7-1)
OpenJDK 64-Bit Server VM (build 11.0.22+7-1, mixed mode)
If JAVA_VERSION=13+ then:
Code:
java -version
java: error: no suitable JavaVMs found
If JAVA_VERSION=17+ then:
Code:
java -version
openjdk version "1.8.0_402"
OpenJDK Runtime Environment (build 1.8.0_402-b06)
OpenJDK 64-Bit Server VM (build 25.402-b06, mixed mode)
Which is bizarre
If JAVA_VERSION=21+ then:
Code:
java -version
openjdk version "21.0.2" 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13-1)
OpenJDK 64-Bit Server VM (build 21.0.2+13-1, mixed mode, sharing)

The implication is the the + suffix on JAVA_VERSION stings does not work as expected. So, if the selected JAVA_VERSION is not installed then no java is found. Finally, there is the curious matter of what happens when JAVA_VERSION is set to 17+ . Then the java version switches to openjdk version "1.8.0_402". ???
 
Back
Top