-
Bug
-
Resolution: Duplicate
-
P4
-
14, 15, 16
-
x86_64
-
os_x
ADDITIONAL SYSTEM INFORMATION :
Mac OS X 10.16 Big Sur,
JDK 14, 15, 16
A DESCRIPTION OF THE PROBLEM :
There is a know issue in Big Sur beta :
"New in macOS Big Sur 11.0.1 beta, the system ships with a built-in dynamic linker cache of all system-provided libraries. As part of this change, copies of dynamic libraries are no longer present on the filesystem. Code that attempts to check for dynamic library presence by looking for a file at a path or enumerating a directory will fail. Instead, check for library presence by attempting to dlopen() the path, which will correctly check for the library in the cache. (62986286)".
This affects the behaviour of sun.security.smartcardio.PlatformPCSC#getLibraryName which can not check existence of library and throws IOException - No PC/SC library found on this system.
When I set system variable sun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC it works fine.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
call :
javax.smartcardio.TerminalFactory.getDefault().terminals().list();
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
List of card terminals, may be empty.
ACTUAL -
IOException No PC/SC library found on this system
---------- BEGIN SOURCE ----------
List<CardTerminal> cardTerminals = TerminalFactory.getDefault().terminals().list();
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
set system variable sun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC
FREQUENCY : always
Mac OS X 10.16 Big Sur,
JDK 14, 15, 16
A DESCRIPTION OF THE PROBLEM :
There is a know issue in Big Sur beta :
"New in macOS Big Sur 11.0.1 beta, the system ships with a built-in dynamic linker cache of all system-provided libraries. As part of this change, copies of dynamic libraries are no longer present on the filesystem. Code that attempts to check for dynamic library presence by looking for a file at a path or enumerating a directory will fail. Instead, check for library presence by attempting to dlopen() the path, which will correctly check for the library in the cache. (62986286)".
This affects the behaviour of sun.security.smartcardio.PlatformPCSC#getLibraryName which can not check existence of library and throws IOException - No PC/SC library found on this system.
When I set system variable sun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC it works fine.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
call :
javax.smartcardio.TerminalFactory.getDefault().terminals().list();
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
List of card terminals, may be empty.
ACTUAL -
IOException No PC/SC library found on this system
---------- BEGIN SOURCE ----------
List<CardTerminal> cardTerminals = TerminalFactory.getDefault().terminals().list();
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
set system variable sun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC
FREQUENCY : always
- duplicates
-
JDK-8252412 [macos11] system dynamic libraries removed from filesystem
- Closed