nvda icon indicating copy to clipboard operation
nvda copied to clipboard

Java Access Bridge not working with 2019.3 and Windows 7

Open ivnc opened this issue 4 years ago • 13 comments

Issue of a Spanish-speaking user.

Steps to reproduce:

Open Control Panel and press J to locate "Java, link, Java Control Panel". Activate it.

Actual behavior:

The focus gets lost and the object navigator is on the link. Java Control Panel is focusable but the user is unable to read anything. nvda.log this has been reported to happen on two different machines, and after reinstalling both NVDA and JRE. I and another Spanish-speaking users have been unable to reproduce this with Windows 10, although it may be a version specific issue.

Expected behavior:

NVDA reads all the content of the window, since Java Access Bridge is now bundled with the application and it enables JAB in the VM on startup.

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

2019.3.1

Windows version:

Windows 7 (6.1.7601 service pack 1) 32 bits

Name and version of other software in use when reproducing the issue:

Other information about your system:

Other questions

Does the issue still occur after restarting your PC?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

Yes, JAB works as expected with NVDA 2019.2.1 in the same machine.

ivnc avatar Mar 04 '20 15:03 ivnc

I cannot reproduce this on Windows 7 x64. What version and what architecture of Java is installed exactly?

lukaszgo1 avatar Mar 04 '20 17:03 lukaszgo1

The user has reproduced the issue with JRE 6, 7 and 8 on 32 bit, thus JRE architecture is the same. In case of Java 6, he has manually activated JAB

(copying the corresponding file).

Regards.

ivnc avatar Mar 04 '20 19:03 ivnc

cc: @michaelDCurran

Adriani90 avatar Mar 08 '20 22:03 Adriani90

Hello.

A user has reported that this issue is also reproducible with Windows 10 32 bits. Since the original reporter also has a 32-bit system, in their case Windows 7 with SP1, this is probably a problem related only to 32-bit machines. This second report was solved by downloading JDK from AdoptOpenJDK and manually copying the file windowsaccessbridge-32.dll into system32 folder.

Regards.

ivnc avatar Apr 02 '21 18:04 ivnc

Hi, according to further comments submitted to us by the reporter, the problem is that NVDA doesn't locate the file C:\Windows\system32\WindowsAccessBridge.dll and looks for C:\Windows\syswow64\WindowsAccessBridge-32.dll instead, even on a 32-bits machine.

ivnc avatar May 08 '23 08:05 ivnc

cc: @gerald-hartig I guess this impacts many use cases on 32bit machines, it might be worthy to look at it.

Adriani90 avatar Feb 22 '24 16:02 Adriani90

Can this be reproduced on Windows 8.1, Windows 10 or Windows 11 on 32bit machines? Windows 7 is no longer supported. I am closing this for now, but can re-open if this is reproducible on 8.1/10/11

seanbudd avatar Feb 22 '24 22:02 seanbudd

As I commented, in 2021 we had an user with a similar issue on Windows 10 32-bit, specifically Win 10 version 1909. Would you like me to ask him for more information? My original comment was:

Hello.

A user has reported that this issue is also reproducible with Windows 10 32 bits. Since the original reporter also has a 32-bit system, in their case Windows 7 with SP1, this is probably a problem related only to 32-bit machines. This second report was solved by downloading JDK from AdoptOpenJDK and manually copying the file windowsaccessbridge-32.dll into system32 folder.

Regards.

ivnc avatar Feb 22 '24 23:02 ivnc

Thanks - I missed that sentence

seanbudd avatar Feb 22 '24 23:02 seanbudd

@seanbudd if a windows version no longer being supported is valid as a reason to close, can I ask what the policy would be regarding Java versions? My thought here being that as Java17 seems to be the last LTS Java release supporting 32-bit then once Java17 is no longer supported then as far as NVDA goes would this then be an issue. Unlike Windows though, (java may be more tricky to determine when it is "supported", mainly because you have builds and support from various organisations and some of those offer both free and paid for support which may also have different end dates. My concern is that this could remain as a lingering issue for ever more, or at least until there is no longer a 32-bit Windows which is supported. To see what I mean about the variety of Java support dates, see this wikipedia article https://en.wikipedia.org/wiki/Java_version_history

mwhapples avatar Feb 23 '24 09:02 mwhapples

@mwhapples we will be forced to move to 64bit in the next few years. I think any issues with extremely ancient versions of Java we can close. I'd suggest a conservative cut off around Java SE 10/11

seanbudd avatar Mar 12 '24 23:03 seanbudd

@mwhapples we will be forced to move to 64bit in the next few years. I think any issues with extremely ancient versions of Java we can close. I'd suggest a conservative cut off around Java SE 10/11

seanbudd avatar Mar 12 '24 23:03 seanbudd

I am not a programmer, but looking at the JABHandler code before 2019.3, I realized that the legacy mode is missing to define the JOBJECT64 class. We also need to locate the windowsAccessBridge.dll dll, and load it in the same way as the one that is already in NVDA, depending on the architecture (x86 or x64). If the operating system is 32-bit, define: class JOBJECT64(c_int): Otherwise use c_int64 instead. I have downloaded the latest JABHandler.py from the source code, modified it to work, and also downloaded windowsAccessbridge.dll from the open jdk jre, and it worked on my system.

FelipeZanabria avatar May 12 '24 00:05 FelipeZanabria