BBC2APK refuses to recognise Java

Discussions related to the supplied tools and add-in utilities
User avatar
Trackside
Posts: 7
Joined: Fri 09 May 2025, 14:17

BBC2APK refuses to recognise Java

Post by Trackside »

I installed the BBC2APK utility on W10, with admin permissions, also running it like that.
I also installed the latest 64bit Java.
However, whenever I try running BBC2APK, it reports "This program requires Java v1.8 or later to be installed."

java --version

Code: Select all

java 24.0.1 2025-04-15
Java(TM) SE Runtime Environment (build 24.0.1+9-30)
Java HotSpot(TM) 64-Bit Server VM (build 24.0.1+9-30, mixed mode, sharing)
Richard Russell
Posts: 366
Joined: Tue 18 Jun 2024, 09:32

Re: BBC2APK refuses to recognise Java

Post by Richard Russell »

Trackside wrote: Fri 09 May 2025, 14:39 I installed the BBC2APK utility on W10, with admin permissions, also running it like that.
I also installed the latest 64bit Java.
However, whenever I try running BBC2APK, it reports "This program requires Java v1.8 or later to be installed."
It's possible that it needs 32-bit Java (BBC BASIC for Windows is a 32-bit app). The relevant code from BBC2APK is below; perhaps somebody with a better understanding than I have can advise:

Code: Select all

      JavaHome$ = ""

      REM Find 32-bit Java in preference to 64-bit (Java install defaults to 32-bit)
      REPEAT
        SYS "RegOpenKeyEx", HKEY_LOCAL_MACHINE, "Software\JavaSoft\JRE", \
        \                   0, KEY_READ, ^key% TO res%
        IF res% = 0 THEN EXIT REPEAT
        SYS "RegOpenKeyEx", HKEY_LOCAL_MACHINE, "Software\JavaSoft\JRE", \
        \                   0, KEY_READ OR KEY_WOW64_64KEY, ^key% TO res%
        IF res% = 0 THEN EXIT REPEAT
        SYS "RegOpenKeyEx", HKEY_LOCAL_MACHINE, "Software\JavaSoft\Java Runtime Environment", \
        \                   0, KEY_READ, ^key% TO res%
        IF res% = 0 THEN EXIT REPEAT
        SYS "RegOpenKeyEx", HKEY_LOCAL_MACHINE, "Software\JavaSoft\Java Runtime Environment", \
        \                   0, KEY_READ OR KEY_WOW64_64KEY, ^key% TO res%
        IF res% = 0 THEN EXIT REPEAT

        SYS "RegOpenKeyEx", HKEY_CURRENT_USER, "Software\JavaSoft\JRE", \
        \                   0, KEY_READ, ^key% TO res%
        IF res% = 0 THEN EXIT REPEAT
        SYS "RegOpenKeyEx", HKEY_CURRENT_USER, "Software\JavaSoft\JRE", \
        \                   0, KEY_READ OR KEY_WOW64_64KEY, ^key% TO res%
        IF res% = 0 THEN EXIT REPEAT
        SYS "RegOpenKeyEx", HKEY_CURRENT_USER, "Software\JavaSoft\Java Runtime Environment", \
        \                   0, KEY_READ, ^key% TO res%
        IF res% = 0 THEN EXIT REPEAT
        SYS "RegOpenKeyEx", HKEY_CURRENT_USER, "Software\JavaSoft\Java Runtime Environment", \
        \                   0, KEY_READ OR KEY_WOW64_64KEY, ^key% TO res%
        IF res% = 0 THEN EXIT REPEAT
      UNTIL TRUE

      REM Find Java home directory:
      IF res% = 0 THEN
        DIM subkey{name&(255)}
        cchName% = DIM(subkey{})
        index% = 0
        REPEAT
          SYS "RegEnumKeyEx", key%, index%, subkey{}, ^cchName%, FALSE, FALSE, FALSE, FALSE TO res%
          index% += 1
        UNTIL VAL(subkey.name&()) >= 1.8 OR res%
        IF res% = 0 THEN
          SYS "RegOpenKeyEx", key%, subkey.name&(), 0, KEY_READ OR KEY_WOW64_64KEY, ^subkey% TO res%
          IF res% SYS "RegOpenKeyEx", key%, subkey.name&(), 0, KEY_READ, ^subkey% TO res%
          IF res% = 0 THEN
            DIM keyval{string&(255)}
            cbData% = DIM(keyval{})
            SYS "RegQueryValueEx", subkey%, "JavaHome", FALSE, FALSE, keyval{}, ^cbData% TO res%
            IF res% = 0 JavaHome$ = keyval.string&()
            SYS "RegCloseKey", subkey%
          ENDIF
        ENDIF
        SYS "RegCloseKey", key%
      ENDIF

      REM Abort if Java not installed:
      IF JavaHome$ = "" THEN
        SYS "MessageBox", !Form%, "This program requires Java™" + CHR$13 + \
        \   "v1.8 or later to be installed.", "BBC2APK", MB_ICONWARNING
        PROCcleanup
        QUIT
      ENDIF
User avatar
Trackside
Posts: 7
Joined: Fri 09 May 2025, 14:17

Re: BBC2APK refuses to recognise Java

Post by Trackside »

Thanks. Manually reading from the registry, using regedit, I see:

Code: Select all

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\24.0.1

Key: JavaHome
Value: C:\Program Files\Java\jdk-24
So I'll try overriding that with JavaHome$="C:\Program Files\Java\jdk-24" then skipping the rest of it.

I suppose a more elegant way would be adding alternative registry tree navigation options to the bottom of that REPEAT/EXIT non-loop.
User avatar
Trackside
Posts: 7
Joined: Fri 09 May 2025, 14:17

Re: BBC2APK refuses to recognise Java

Post by Trackside »

Er, where is the code segment?

I can't find it in the [compiled] bbc2apk.exe, and I can't find its source in GitHub.
Richard Russell
Posts: 366
Joined: Tue 18 Jun 2024, 09:32

Re: BBC2APK refuses to recognise Java

Post by Richard Russell »

Trackside wrote: Fri 09 May 2025, 17:08 I suppose a more elegant way would be adding alternative registry tree navigation options to the bottom of that REPEAT/EXIT non-loop.
I feel there ought to be a better way, but this Nasa web page seems to confirm that it's not straightforward.
User avatar
Trackside
Posts: 7
Joined: Fri 09 May 2025, 14:17

Re: BBC2APK refuses to recognise Java

Post by Trackside »

Taking a leaf out of NASA's book, I tried:
set JAVA_HOME="C:\Program Files\Java\jdk-24"
set JAVA_HOME="C:\Program Files\Java\jdk-24\bin"

Neither changed anything.

set JAVA_HOME
Shows the value persists.

I'll try uninstalling 64bit Java, then reinstalling the 32bit version...
User avatar
Trackside
Posts: 7
Joined: Fri 09 May 2025, 14:17

Re: BBC2APK refuses to recognise Java

Post by Trackside »

After uninstalling: https://www.java.com/en/download/help/u ... _java.html
And reinstalling: https://www.java.com/en/download/help/w ... nload.html

java -version

Code: Select all

java version "1.8.0_451"
Java(TM) SE Runtime Environment (build 1.8.0_451-b10)
Java HotSpot(TM) Client VM (build 25.451-b10, mixed mode, sharing)
Java now lives in: C:\Program Files (x86)\Java\jre1.8.0_451

Strangely, I can't now find JavaHome in the registry, anywhere BBC2APK.exe looks for it, but it runs nonetheless. Thanks for your help.
Richard Russell
Posts: 366
Joined: Tue 18 Jun 2024, 09:32

Re: BBC2APK refuses to recognise Java

Post by Richard Russell »

Trackside wrote: Fri 09 May 2025, 18:08 Strangely, I can't now find JavaHome in the registry, anywhere BBC2APK.exe looks for it, but it runs nonetheless. Thanks for your help.
If you work out what I would need to change to make it less fussy, let me know.