Known issues and limitations
Known issues or limitations that you might encounter in specific system environments, or configurations.
Some of the problems described in this section might not be limitations with the release because instructions are provided to work around problems, where possible.
Items that are new for this release
- Class java.awt.Robot is not supported
- The java.awt.Robot class is not supported on z/OS systems. Java programs that use the Robot class might not run correctly on z/OS systems.
Items from previous releases that still apply
- Circular loading error when you use SAF key rings and a Java™ security manager
-
This error occurs in the following scenario:
- You have a Java application that uses one of the IBM implementations of the
URLStreamHandlerProvider API (for example,
com.ibm.crypto.hdwrCCA.provider.safkeyring.Provider) to create a
URLStreamHandler instance by using any of the following supported SAF key ring
URLs:
safkeyringjce
,safkeyringjcehybrid
, orsafkeyringjcecca
. - You run the Java application with a security manager enabled (for example, by specifying -Djava.security.manager on the Java command line).
The stack trace contains further information:Exception in thread "main" java.util.ServiceConfigurationError: java.net.spi.URLStreamHandlerProvider: Provider com.ibm.crypto.ibmjcehybrid.provider.safkeyring.Provider could not be instantiated
Caused by: java.lang.Error: Circular loading of URL stream handler providers detected
This error is related to the use of the security manager. To avoid this issue, use the
safkeyring
URL with thejava.protocol.handler.pkgs
system property, as described in Accessing a RACFInputStream and RACFOutputStream instance by using the URLStreamHandler class.Note: The SecurityManager API was deprecated in OpenJDK17 and might be removed in a future release of the IBM SDK. - You have a Java application that uses one of the IBM implementations of the
URLStreamHandlerProvider API (for example,
com.ibm.crypto.hdwrCCA.provider.safkeyring.Provider) to create a
URLStreamHandler instance by using any of the following supported SAF key ring
URLs:
- jlink tool attempts to set the APF-authorized attribute on libj9ifa29.so to ensure zIIP eligibility
- When you use the jlink tool to create a native runtime image, the tool tries
to set the APF-authorized attribute on the libj9ifa29.so library, to ensure
that the Java application remains eligible for processing by the IBM® System z Integrated Information Processor (zIIP). If you are not authorized to perform the
APF operation, a warning message is
issued:
Warning: APF authorization failed for lib/default/libj9ifa29.so
- Limitation of class path length
-
If there are more than 2031 characters in your class path, the shell truncates your class path to 2031 characters. If you need a class path longer than 2031 characters, use an options file. For details, see @argfile in https://docs.oracle.com/en/java/javase/11/tools/java.html.
- Messages written using stdout/stderr may not be redirected when freopen() is used
- Messages
that the JVM writes to stdout / stderr might not be redirected
to the new file if the Java app uses the C/C++
freopen() function to redirect stdout /
stderr streams from a file of one type to the other. To fix this problem, set the
com.ibm.writeToStandardOutputsUsingStreams system property to
true
when you start the JVM. This property specifies that the output is written by using file streams, which support the redirection of data between MVS datsets and USS zFS files.Note: This setting also changes the default buffering behavior fromno buffering
toline buffering
, and output might not be produced promptly. To counter this issue, disable buffering by using the setbuf() or setvbuf() functions after calling the freopen() function.
Other issues
If you find a problem that you have been unable to solve, see Java SDK troubleshooting for advice and information about how to raise problems.