HanSolo / javafinder

JavaFinder is a little tool that helps you finding all installed Java versions in a given path
Apache License 2.0
16 stars 0 forks source link

Oracle Java shows as no vendor, no name and OpenJDK #4

Closed ajshastri closed 9 months ago

ajshastri commented 9 months ago

Hello,

I had a couple of bugs/enhancement requests/questions.

  1. Oracle Java (only) shows up for me as a blank on vendor and name on both Linux and Windows, Is that expected? Can that be made to say Oracle Java instead?
  2. Would Oracle Java/Zing prime and other paid java versions be considered OpenJDK? Or is it meant to say OpenJDK compliant.

Output:

Windows:

        {
            "vendor": "",
            "name": "",
            "version": "8.0.381",
            "timestamp": 1695437080,
            "path": "C:\\Program Files\\Java\\jdk-1.8\\",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },
        {
            "vendor": "",
            "name": "",
            "version": "8.0.381",
            "timestamp": 1695437080,
            "path": "C:\\Program Files\\Java\\jdk-1.8\\jre\\",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },

Linux:

        {
            "vendor": "",
            "name": "",
            "version": "8.0.371",
            "timestamp": 1695071821,
            "path": "/opt/java/jdk1.8.0_371/jre/",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },
        {
            "vendor": "",
            "name": "",
            "version": "8.0.361",
            "timestamp": 1695071821,
            "path": "/opt/java/jdk1.8.0_361/jre/",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },
HanSolo commented 9 months ago

Could you do me a favor and provide the out from java -version of this Oracle JDK?

ajshastri commented 9 months ago

On Linux:

java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.371-b25, mixed mode)

on Windows:

java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b25, mixed mode)
HanSolo commented 9 months ago

Great, could you also send the file with the name "properties"? It should be in the main installation folder of the JDK distribution.

ajshastri commented 9 months ago

I didn't find a file with the name properties but I did find a file with the name "release" in the Oracle java, same as Zulu-17:

$ cat /opt/java/jdk1.8.0_371/release
JAVA_VERSION="1.8.0_371"
OS_NAME="Linux"
OS_VERSION="2.6"
OS_ARCH="amd64"
SOURCE=".:git:0ac1657d1cff+"
BUILD_TYPE="commercial"

This is the Zulu one

$ cat /opt/java/zulu-17/release
IMPLEMENTOR="Azul Systems, Inc."
IMPLEMENTOR_VERSION="Zulu17.42+21-CRaC-CA"
JAVA_VERSION="17.0.7"
JAVA_VERSION_DATE="2023-04-18"
LIBC="gnu"
MODULES="java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.compiler jdk.crac jdk.crypto.ec jdk.crypto.cryptoki jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.foreign jdk.incubator.vector jdk.internal.le jdk.internal.opt jdk.internal.vm.ci jdk.internal.vm.compiler jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom jdk.zipfs"
OS_ARCH="x86_64"
OS_NAME="Linux"
SOURCE=".:git:289667bf5167"

This is the output of the find in the un-tar jdk home

$ find /opt/java/jdk1.8.0_371 -name *prop*
/opt/java/jdk1.8.0_371/jre/lib/management/management.properties
/opt/java/jdk1.8.0_371/jre/lib/javafx.properties
/opt/java/jdk1.8.0_371/jre/lib/hijrah-config-umalqura.properties
/opt/java/jdk1.8.0_371/jre/lib/logging.properties
/opt/java/jdk1.8.0_371/jre/lib/images/cursors/cursors.properties
/opt/java/jdk1.8.0_371/jre/lib/fontconfig.SuSE.10.properties.src
/opt/java/jdk1.8.0_371/jre/lib/fontconfig.properties.src
/opt/java/jdk1.8.0_371/jre/lib/content-types.properties
/opt/java/jdk1.8.0_371/jre/lib/calendars.properties
/opt/java/jdk1.8.0_371/jre/lib/fontconfig.RedHat.6.properties.src
/opt/java/jdk1.8.0_371/jre/lib/flavormap.properties
/opt/java/jdk1.8.0_371/jre/lib/fontconfig.RedHat.5.properties.src
/opt/java/jdk1.8.0_371/jre/lib/psfont.properties.ja
/opt/java/jdk1.8.0_371/jre/lib/sound.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_pt_BR.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_zh_TW.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_zh_CN.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_ko.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_ja.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_fr.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_es.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_zh_HK.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_it.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_sv.properties
/opt/java/jdk1.8.0_371/jre/lib/deploy/messages_de.properties
/opt/java/jdk1.8.0_371/jre/lib/psfontj2d.properties
/opt/java/jdk1.8.0_371/jre/lib/fontconfig.Turbo.properties.src
/opt/java/jdk1.8.0_371/jre/lib/fontconfig.SuSE.11.properties.src
/opt/java/jdk1.8.0_371/jre/lib/net.properties
HanSolo commented 9 months ago

Perfect, thx a lot, will provide a new version as soon as possible 👍🏻

ajshastri commented 9 months ago

Much appreciated!

HanSolo commented 9 months ago

Does it work with the latest release?

ajshastri commented 9 months ago

It works! I appreciate your help on this!

Linux:

        {
            "vendor": "Oracle",
            "name": "Oracle",
            "version": "8.0.66",
            "timestamp": 1695740065,
            "path": "/opt/java/mw_home/instances/Node2/jdk/",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },
        {
            "vendor": "Oracle",
            "name": "Oracle",
            "version": "7.0.291",
            "timestamp": 1695740066,
            "path": "/opt/java/oemagent/agent12cR5/agent_13.3.0.0.0/oracle_common/jdk/jre/",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        }

Windows:

        {
            "vendor": "Oracle",
            "name": "Oracle",
            "version": "17.0.8",
            "timestamp": 1695740374,
            "path": "C:\\Program Files\\Java\\graalvm-jdk-17.0.8+9.1\\",
            "build_scope": "GraalVM",
            "in_use": false,
            "used_by": []
        },
        {
            "vendor": "Oracle",
            "name": "Oracle",
            "version": "11.0.18",
            "timestamp": 1695740374,
            "path": "C:\\Program Files\\sqldeveloper\\jdk\\jre\\",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },
        {
            "vendor": "Oracle",
            "name": "Oracle",
            "version": "8.0.381",
            "timestamp": 1695740374,
            "path": "C:\\Program Files\\Java\\jre-1.8\\",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },
HanSolo commented 9 months ago

Nice :)

ajshastri commented 9 months ago

I have an interesting question: Can we add a hostname field to the output so we have a unique identifier for a script?

I was hoping to make a small app that can grab this data and dump it into a DB.

If it's a lot of work, it's no biggie, I'll attempt to use headers while sending it out, but was curious if possible.

HanSolo commented 9 months ago

Could you provide an example?

ajshastri commented 9 months ago

For the case where the output looks like:

{
    "timestamp": 1695740027,
    "search_path": "/opt/weblogic",
    "sysinfo": {
        "operating_system": "Linux",
        "architecture": "X64",
        "bit": "64 Bit"
    },
    "distributions": [
        {
            "vendor": "Oracle",
            "name": "Oracle",
            "version": "7.0.291",
            "timestamp": 1695740065,
            "path": "/opt/java/jre/",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },
    ]
}

can the output be:

{
    "timestamp": 1695740027,
    "search_path": "/opt/weblogic",
    "sysinfo": {
        "operating_system": "Linux",
        "architecture": "X64",
        "bit": "64 Bit",
        "hostname": "ubuntu.local"
    },
    "distributions": [
        {
            "vendor": "Oracle",
            "name": "Oracle",
            "version": "7.0.291",
            "timestamp": 1695740065,
            "path": "/opt/java/jre/",
            "build_scope": "OpenJDK",
            "in_use": false,
            "used_by": []
        },
    ]
}
ajshastri commented 9 months ago

Also, unrelated, the bump to 17.0.29 seems to have broken jbang:

[jbang] [0:478] jbang version 0.110.1
[jbang] [0:495] Resolving resource ref: javafinder@hansolo
[jbang] [0:502] Reading catalog from /opt/java/.jbang/implicit-catalog.json
[jbang] [0:577] Using cached file /opt/java/.jbang/cache/urls/1a8f7f6bb0fae936d5c523d49a87e026f58790b9fdf6135e01d369cb6e2da557/jbang-catalog.json for remote https://raw.githubusercontent.com/hansolo/jbang-catalog/HEAD/jbang-catalog.json
[jbang] [0:577] Reading catalog from https://github.com/hansolo/jbang-catalog/blob/HEAD/jbang-catalog.json
[jbang] [0:580] Obtained catalog from https://github.com/hansolo/jbang-catalog/blob/HEAD/jbang-catalog.json
[jbang] [0:583] Reading catalog from classpath:/jbang-catalog.json
[jbang] [1:181] Requesting HTTP GET https://github.com/HanSolo/javafinder/releases/download/17.0.27/javafinder-17.0.27.jar
[jbang] [1:181] Headers {User-Agent=[JBang/0.110.1 (Linux/4.1.12-124.77.2.el7uek.x86_64/amd64) Java/1.8.0_371/Oracle Corporation]}
[jbang] [1:726] Retry using cache-evict: javafinder@hansolo
[jbang] [1:734] Requesting HTTP GET https://raw.githubusercontent.com/hansolo/jbang-catalog/HEAD/jbang-catalog.json
[jbang] [1:734] Headers {If-None-Match=["7e656ee7fd9c01db96b5b1e22199398478fc570bd3ff9fedb4c5d4ccc6824866"], User-Agent=[JBang/0.110.1 (Linux/4.1.12-124.77.2.el7uek.x86_64/amd64) Java/1.8.0_371/Oracle Corporation], If-Modified-Since=[Tue, 26 Sep 2023 16:03:08 GMT]}
[jbang] [1:966] Not modified, using cached file /opt/java/.jbang/cache/urls/1a8f7f6bb0fae936d5c523d49a87e026f58790b9fdf6135e01d369cb6e2da557/jbang-catalog.json for remote https://raw.githubusercontent.com/hansolo/jbang-catalog/HEAD/jbang-catalog.json
[jbang] [1:981] Obtained catalog from https://github.com/hansolo/jbang-catalog/blob/HEAD/jbang-catalog.json
[jbang] [1:986] Requesting HTTP GET https://github.com/HanSolo/javafinder/releases/download/17.0.27/javafinder-17.0.27.jar
[jbang] [1:987] Headers {User-Agent=[JBang/0.110.1 (Linux/4.1.12-124.77.2.el7uek.x86_64/amd64) Java/1.8.0_371/Oracle Corporation]}
[jbang] [2:265] [ERROR] Could not download https://github.com/HanSolo/javafinder/releases/download/17.0.27/javafinder-17.0.27.jar
dev.jbang.cli.ExitException: Could not download https://github.com/HanSolo/javafinder/releases/download/17.0.27/javafinder-17.0.27.jar
        ...
Caused by: java.io.FileNotFoundException: No file to download at https://github.com/HanSolo/javafinder/releases/download/17.0.27/javafinder-17.0.27.jar. Server replied HTTP code: 404
        ...
[jbang] [2:266] If you believe this a bug in jbang, open an issue at https://github.com/jbangdev/jbang/issues

I was going to make a PL on jbang in https://github.com/HanSolo/jbang-catalog/blob/91ff74b095ee623890441c4e7be53dd97867aff2/jbang-catalog.json But the link https://github.com/HanSolo/javafinder/releases/download/17.0.29/javafinder-17.0.29.jar doesn't exist

HanSolo commented 9 months ago

that’s a good idea, will add the hostname feature 👍🏻

HanSolo commented 9 months ago

For JBang I need to update the catalog…will do that tomorrow too

ajshastri commented 9 months ago

Thank you!

HanSolo commented 9 months ago

Release 17.0.33 now also contains the hostname if it can get it

ajshastri commented 9 months ago

Awesome, it works! Thank you!