diff --git a/src/java.base/share/classes/java/io/ObjectStreamClass.java b/src/java.base/share/classes/java/io/ObjectStreamClass.java
index 94d3568e111..1a683e823fc 100644
--- a/src/java.base/share/classes/java/io/ObjectStreamClass.java
+++ b/src/java.base/share/classes/java/io/ObjectStreamClass.java
@@ -1193,7 +1193,7 @@ public class ObjectStreamClass implements Serializable {
             try {
                 writeObjectMethod.invoke(obj, new Object[]{ out });
             } catch (InvocationTargetException ex) {
-                Throwable th = ex.getTargetException();
+                Throwable th = ex.getCause();
                 if (th instanceof IOException) {
                     throw (IOException) th;
                 } else {
@@ -1223,7 +1223,7 @@ public class ObjectStreamClass implements Serializable {
             try {
                 readObjectMethod.invoke(obj, new Object[]{ in });
             } catch (InvocationTargetException ex) {
-                Throwable th = ex.getTargetException();
+                Throwable th = ex.getCause();
                 if (th instanceof ClassNotFoundException) {
                     throw (ClassNotFoundException) th;
                 } else if (th instanceof IOException) {
@@ -1254,7 +1254,7 @@ public class ObjectStreamClass implements Serializable {
             try {
                 readObjectNoDataMethod.invoke(obj, (Object[]) null);
             } catch (InvocationTargetException ex) {
-                Throwable th = ex.getTargetException();
+                Throwable th = ex.getCause();
                 if (th instanceof ObjectStreamException) {
                     throw (ObjectStreamException) th;
                 } else {
@@ -1283,7 +1283,7 @@ public class ObjectStreamClass implements Serializable {
             try {
                 return writeReplaceMethod.invoke(obj, (Object[]) null);
             } catch (InvocationTargetException ex) {
-                Throwable th = ex.getTargetException();
+                Throwable th = ex.getCause();
                 if (th instanceof ObjectStreamException) {
                     throw (ObjectStreamException) th;
                 } else {
@@ -1313,7 +1313,7 @@ public class ObjectStreamClass implements Serializable {
             try {
                 return readResolveMethod.invoke(obj, (Object[]) null);
             } catch (InvocationTargetException ex) {
-                Throwable th = ex.getTargetException();
+                Throwable th = ex.getCause();
                 if (th instanceof ObjectStreamException) {
                     throw (ObjectStreamException) th;
                 } else {
diff --git a/src/java.base/share/classes/java/io/WriteAbortedException.java b/src/java.base/share/classes/java/io/WriteAbortedException.java
index 5b82d0999f1..4ceaa905eab 100644
--- a/src/java.base/share/classes/java/io/WriteAbortedException.java
+++ b/src/java.base/share/classes/java/io/WriteAbortedException.java
@@ -33,13 +33,6 @@ package java.io;
  * field. The stream is reset to it's initial state and all references
  * to objects already deserialized are discarded.
  *
- * <p>As of release 1.4, this exception has been retrofitted to conform to
- * the general purpose exception-chaining mechanism.  The "exception causing
- * the abort" that is provided at construction time and
- * accessed via the public {@link #detail} field is now known as the
- * <i>cause</i>, and may be accessed via the {@link Throwable#getCause()}
- * method, as well as the aforementioned "legacy field."
- *
  * @since   1.1
  */
 public class WriteAbortedException extends ObjectStreamException {
@@ -49,12 +42,13 @@ public class WriteAbortedException extends ObjectStreamException {
     /**
      * Exception that was caught while writing the ObjectStream.
      *
-     * <p>This field predates the general-purpose exception chaining facility.
-     * The {@link Throwable#getCause()} method is now the preferred means of
-     * obtaining this information.
+     * @deprecated This field predates the general-purpose exception
+     * chaining facility.  The {@link Throwable#getCause()} method is
+     * now the preferred means of obtaining this information.
      *
      * @serial
      */
+    @Deprecated(since="17")
     public Exception detail;
 
     /**
@@ -87,6 +81,7 @@ public class WriteAbortedException extends ObjectStreamException {
      *          which may be null.
      * @since   1.4
      */
+    @Override
     public Throwable getCause() {
         return detail;
     }
diff --git a/src/java.base/share/classes/java/lang/ClassNotFoundException.java b/src/java.base/share/classes/java/lang/ClassNotFoundException.java
index 2a26786a297..de91dadbb48 100644
--- a/src/java.base/share/classes/java/lang/ClassNotFoundException.java
+++ b/src/java.base/share/classes/java/lang/ClassNotFoundException.java
@@ -42,13 +42,6 @@ import java.io.ObjectStreamField;
  * <p>
  * but no definition for the class with the specified name could be found.
  *
- * <p>As of release 1.4, this exception has been retrofitted to conform to
- * the general purpose exception-chaining mechanism.  The "optional exception
- * that was raised while loading the class" that may be provided at
- * construction time and accessed via the {@link #getException()} method is
- * now known as the <i>cause</i>, and may be accessed via the {@link
- * Throwable#getCause()} method, as well as the aforementioned "legacy method."
- *
  * @see     java.lang.Class#forName(java.lang.String)
  * @see     java.lang.ClassLoader#findSystemClass(java.lang.String)
  * @see     java.lang.ClassLoader#loadClass(java.lang.String, boolean)
@@ -95,7 +88,8 @@ public class ClassNotFoundException extends ReflectiveOperationException {
      * Returns the exception that was raised if an error occurred while
      * attempting to load the class. Otherwise, returns {@code null}.
      *
-     * <p>This method predates the general-purpose exception chaining facility.
+     * @apiNote
+     * This method predates the general-purpose exception chaining facility.
      * The {@link Throwable#getCause()} method is now the preferred means of
      * obtaining this information.
      *
diff --git a/src/java.base/share/classes/java/lang/ExceptionInInitializerError.java b/src/java.base/share/classes/java/lang/ExceptionInInitializerError.java
index 134eb113b53..3483c4a8ff4 100644
--- a/src/java.base/share/classes/java/lang/ExceptionInInitializerError.java
+++ b/src/java.base/share/classes/java/lang/ExceptionInInitializerError.java
@@ -36,13 +36,6 @@ import java.io.ObjectStreamField;
  * exception occurred during evaluation of a static initializer or the
  * initializer for a static variable.
  *
- * <p>As of release 1.4, this exception has been retrofitted to conform to
- * the general purpose exception-chaining mechanism.  The "saved throwable
- * object" that may be provided at construction time and accessed via
- * the {@link #getException()} method is now known as the <i>cause</i>,
- * and may be accessed via the {@link Throwable#getCause()} method, as well
- * as the aforementioned "legacy method."
- *
  * @author  Frank Yellin
  * @since   1.1
  */
@@ -92,7 +85,8 @@ public class ExceptionInInitializerError extends LinkageError {
      * Returns the exception that occurred during a static initialization that
      * caused this error to be created.
      *
-     * <p>This method predates the general-purpose exception chaining facility.
+     * @apiNote
+     * This method predates the general-purpose exception chaining facility.
      * The {@link Throwable#getCause()} method is now the preferred means of
      * obtaining this information.
      *
diff --git a/src/java.base/share/classes/java/lang/reflect/InvocationTargetException.java b/src/java.base/share/classes/java/lang/reflect/InvocationTargetException.java
index b5aa8f61336..4db453c9b7f 100644
--- a/src/java.base/share/classes/java/lang/reflect/InvocationTargetException.java
+++ b/src/java.base/share/classes/java/lang/reflect/InvocationTargetException.java
@@ -29,13 +29,6 @@ package java.lang.reflect;
  * InvocationTargetException is a checked exception that wraps
  * an exception thrown by an invoked method or constructor.
  *
- * <p>As of release 1.4, this exception has been retrofitted to conform to
- * the general purpose exception-chaining mechanism.  The "target exception"
- * that is provided at construction time and accessed via the
- * {@link #getTargetException()} method is now known as the <i>cause</i>,
- * and may be accessed via the {@link Throwable#getCause()} method,
- * as well as the aforementioned "legacy method."
- *
  * @see Method
  * @see Constructor
  * @since 1.1
@@ -90,7 +83,8 @@ public class InvocationTargetException extends ReflectiveOperationException {
     /**
      * Get the thrown target exception.
      *
-     * <p>This method predates the general-purpose exception chaining facility.
+     * @apiNote
+     * This method predates the general-purpose exception chaining facility.
      * The {@link Throwable#getCause()} method is now the preferred means of
      * obtaining this information.
      *
@@ -107,6 +101,7 @@ public class InvocationTargetException extends ReflectiveOperationException {
      * @return  the cause of this exception.
      * @since   1.4
      */
+    @Override
     public Throwable getCause() {
         return target;
     }
diff --git a/src/java.base/share/classes/java/lang/reflect/UndeclaredThrowableException.java b/src/java.base/share/classes/java/lang/reflect/UndeclaredThrowableException.java
index 91700f1e8ca..0b086330de2 100644
--- a/src/java.base/share/classes/java/lang/reflect/UndeclaredThrowableException.java
+++ b/src/java.base/share/classes/java/lang/reflect/UndeclaredThrowableException.java
@@ -48,15 +48,6 @@ import jdk.internal.access.SharedSecrets;
  * {@code RuntimeException}, so it is an unchecked exception
  * that wraps a checked exception.
  *
- * <p>As of release 1.4, this exception has been retrofitted to
- * conform to the general purpose exception-chaining mechanism.  The
- * "undeclared checked exception that was thrown by the invocation
- * handler" that may be provided at construction time and accessed via
- * the {@link #getUndeclaredThrowable()} method is now known as the
- * <i>cause</i>, and may be accessed via the {@link
- * Throwable#getCause()} method, as well as the aforementioned "legacy
- * method."
- *
  * @author      Peter Jones
  * @see         InvocationHandler
  * @since       1.3
@@ -94,7 +85,8 @@ public class UndeclaredThrowableException extends RuntimeException {
      * Returns the {@code Throwable} instance wrapped in this
      * {@code UndeclaredThrowableException}, which may be {@code null}.
      *
-     * <p>This method predates the general-purpose exception chaining facility.
+     * @apiNote
+     * This method predates the general-purpose exception chaining facility.
      * The {@link Throwable#getCause()} method is now the preferred means of
      * obtaining this information.
      *
diff --git a/src/java.base/share/classes/java/security/PrivilegedActionException.java b/src/java.base/share/classes/java/security/PrivilegedActionException.java
index 7deeaf3efcc..682a52f1ab2 100644
--- a/src/java.base/share/classes/java/security/PrivilegedActionException.java
+++ b/src/java.base/share/classes/java/security/PrivilegedActionException.java
@@ -42,13 +42,6 @@ import jdk.internal.access.SharedSecrets;
  * {@code PrivilegedActionException} is a "wrapper"
  * for an exception thrown by a privileged action.
  *
- * <p>As of release 1.4, this exception has been retrofitted to conform to
- * the general purpose exception-chaining mechanism.  The "exception thrown
- * by the privileged computation" that is provided at construction time and
- * accessed via the {@link #getException()} method is now known as the
- * <i>cause</i>, and may be accessed via the {@link Throwable#getCause()}
- * method, as well as the aforementioned "legacy method."
- *
  * @since 1.2
  * @see PrivilegedExceptionAction
  * @see AccessController#doPrivileged(PrivilegedExceptionAction)
@@ -73,7 +66,8 @@ public class PrivilegedActionException extends Exception {
      * Returns the exception thrown by the privileged computation that
      * resulted in this {@code PrivilegedActionException}.
      *
-     * <p>This method predates the general-purpose exception chaining facility.
+     * @apiNote
+     * This method predates the general-purpose exception chaining facility.
      * The {@link Throwable#getCause()} method is now the preferred means of
      * obtaining this information.
      *
diff --git a/src/java.base/share/classes/java/util/ResourceBundle.java b/src/java.base/share/classes/java/util/ResourceBundle.java
index d40dad3990e..c9e68b40544 100644
--- a/src/java.base/share/classes/java/util/ResourceBundle.java
+++ b/src/java.base/share/classes/java/util/ResourceBundle.java
@@ -3195,7 +3195,7 @@ public abstract class ResourceBundle {
                         } catch (InvocationTargetException e) {
                             uncheckedThrow(e);
                         } catch (PrivilegedActionException e) {
-                            assert e.getException() instanceof NoSuchMethodException;
+                            assert e.getCause() instanceof NoSuchMethodException;
                             throw new InstantiationException("public no-arg constructor " +
                                 "does not exist in " + bundleClass.getName());
                         }
@@ -3230,7 +3230,7 @@ public abstract class ResourceBundle {
                             }
                         });
                 } catch (PrivilegedActionException e) {
-                    throw (IOException) e.getException();
+                    throw (IOException) e.getCause();
                 }
                 if (stream != null) {
                     try {
diff --git a/src/java.base/share/classes/sun/security/provider/PolicyFile.java b/src/java.base/share/classes/sun/security/provider/PolicyFile.java
index 584bc8bc8b6..e42dbf3af93 100644
--- a/src/java.base/share/classes/sun/security/provider/PolicyFile.java
+++ b/src/java.base/share/classes/sun/security/provider/PolicyFile.java
@@ -765,7 +765,7 @@ public class PolicyFile extends java.security.Policy {
                     }
                 } catch (java.lang.reflect.InvocationTargetException ite) {
                     Object[] source = {pe.permission,
-                                       ite.getTargetException().toString()};
+                                       ite.getCause().toString()};
                     System.err.println(
                         LocalizedMessage.getNonlocalized(
                             POLICY + ".error.adding.Permission.perm.message",
diff --git a/src/java.base/share/classes/sun/security/x509/CRLExtensions.java b/src/java.base/share/classes/sun/security/x509/CRLExtensions.java
index 9f0c7f69e85..1f9c03a9f74 100644
--- a/src/java.base/share/classes/sun/security/x509/CRLExtensions.java
+++ b/src/java.base/share/classes/sun/security/x509/CRLExtensions.java
@@ -127,7 +127,7 @@ public class CRLExtensions {
                 throw new CRLException("Duplicate extensions not allowed");
             }
         } catch (InvocationTargetException invk) {
-            throw new CRLException(invk.getTargetException().getMessage());
+            throw new CRLException(invk.getCause().getMessage());
         } catch (Exception e) {
             throw new CRLException(e.toString());
         }
diff --git a/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java b/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java
index 1ccf0267888..4f8022b4067 100644
--- a/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java
+++ b/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java
@@ -115,7 +115,7 @@ public class CertificateExtensions implements CertAttrSet<Extension> {
                         throw new IOException("Duplicate extensions not allowed");
                     }
         } catch (InvocationTargetException invk) {
-            Throwable e = invk.getTargetException();
+            Throwable e = invk.getCause();
             if (ext.isCritical() == false) {
                 // ignore errors parsing non-critical extensions
                 if (unparseableExtensions == null) {
diff --git a/src/java.base/unix/classes/java/lang/ProcessImpl.java b/src/java.base/unix/classes/java/lang/ProcessImpl.java
index 04173948cf3..fbeca9f35fc 100644
--- a/src/java.base/unix/classes/java/lang/ProcessImpl.java
+++ b/src/java.base/unix/classes/java/lang/ProcessImpl.java
@@ -326,7 +326,7 @@ final class ProcessImpl extends Process {
                 return null;
             });
         } catch (PrivilegedActionException ex) {
-            throw (IOException) ex.getException();
+            throw (IOException) ex.getCause();
         }
     }
 
diff --git a/src/java.desktop/share/classes/java/beans/EventHandler.java b/src/java.desktop/share/classes/java/beans/EventHandler.java
index ea7810cbee7..7d5c77da7a0 100644
--- a/src/java.desktop/share/classes/java/beans/EventHandler.java
+++ b/src/java.desktop/share/classes/java/beans/EventHandler.java
@@ -485,7 +485,7 @@ public class EventHandler implements InvocationHandler {
                 throw new RuntimeException(ex);
             }
             catch (InvocationTargetException ex) {
-                Throwable th = ex.getTargetException();
+                Throwable th = ex.getCause();
                 throw (th instanceof RuntimeException)
                         ? (RuntimeException) th
                         : new RuntimeException(th);
diff --git a/src/java.desktop/share/classes/java/beans/Statement.java b/src/java.desktop/share/classes/java/beans/Statement.java
index 3a47f84787d..1b229de3dc0 100644
--- a/src/java.desktop/share/classes/java/beans/Statement.java
+++ b/src/java.desktop/share/classes/java/beans/Statement.java
@@ -313,7 +313,7 @@ public class Statement {
                                     iae);
             }
             catch (InvocationTargetException ite) {
-                Throwable te = ite.getTargetException();
+                Throwable te = ite.getCause();
                 if (te instanceof Exception) {
                     throw (Exception)te;
                 }
diff --git a/src/java.management/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java b/src/java.management/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java
index 2a99a3b9b0a..25a1e4d563d 100644
--- a/src/java.management/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java
+++ b/src/java.management/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java
@@ -228,7 +228,7 @@ public class MBeanInstantiator {
             moi= cons.newInstance();
         } catch (InvocationTargetException e) {
             // Wrap the exception.
-            Throwable t = e.getTargetException();
+            Throwable t = e.getCause();
             if (t instanceof RuntimeException) {
                 throw new RuntimeMBeanException((RuntimeException)t,
                    "RuntimeException thrown in the MBean's empty constructor");
@@ -318,7 +318,7 @@ public class MBeanInstantiator {
         }
         catch (InvocationTargetException e) {
             // Wrap the exception.
-            Throwable th = e.getTargetException();
+            Throwable th = e.getCause();
             if (th instanceof RuntimeException) {
                 throw new RuntimeMBeanException((RuntimeException)th,
                       "RuntimeException thrown in the MBean's constructor");
diff --git a/src/java.management/share/classes/javax/management/modelmbean/RequiredModelMBean.java b/src/java.management/share/classes/javax/management/modelmbean/RequiredModelMBean.java
index bee678385bf..e5e4817ee75 100644
--- a/src/java.management/share/classes/javax/management/modelmbean/RequiredModelMBean.java
+++ b/src/java.management/share/classes/javax/management/modelmbean/RequiredModelMBean.java
@@ -1201,7 +1201,7 @@ public class RequiredModelMBean
                       "RequiredModelMBean while trying to " +
                       "invoke operation " + opName);
         } catch (InvocationTargetException ite) {
-            Throwable mmbTargEx = ite.getTargetException();
+            Throwable mmbTargEx = ite.getCause();
             if (mmbTargEx instanceof RuntimeException) {
                 throw new MBeanException ((RuntimeException)mmbTargEx,
                       "RuntimeException thrown in RequiredModelMBean "+
diff --git a/src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java b/src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java
index a530799bb14..a3ba273dad8 100644
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java
@@ -238,7 +238,7 @@ public final class Connection implements Runnable {
             outStream = new BufferedOutputStream(sock.getOutputStream());
 
         } catch (InvocationTargetException e) {
-            Throwable realException = e.getTargetException();
+            Throwable realException = e.getCause();
             // realException.printStackTrace();
 
             CommunicationException ce =
diff --git a/src/java.rmi/share/classes/sun/rmi/server/Activation.java b/src/java.rmi/share/classes/sun/rmi/server/Activation.java
index f91386843fe..9d615b95576 100644
--- a/src/java.rmi/share/classes/sun/rmi/server/Activation.java
+++ b/src/java.rmi/share/classes/sun/rmi/server/Activation.java
@@ -1485,7 +1485,7 @@ public class Activation implements Serializable {
             try {
                 execPolicyMethod.invoke(execPolicy, desc, cmd);
             } catch (InvocationTargetException e) {
-                Throwable targetException = e.getTargetException();
+                Throwable targetException = e.getCause();
                 if (targetException instanceof SecurityException) {
                     throw (SecurityException) targetException;
                 } else {
diff --git a/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupImpl.java b/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupImpl.java
index 3456b7824ef..f1d950e3887 100644
--- a/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupImpl.java
+++ b/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupImpl.java
@@ -309,7 +309,7 @@ public class ActivationGroupImpl extends ActivationGroup {
 
         } catch (InvocationTargetException e) {
             throw new ActivationException("exception in object constructor",
-                                          e.getTargetException());
+                                          e.getCause());
 
         } catch (Exception e) {
             throw new ActivationException("unable to activate object", e);
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/launcher/Main.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/launcher/Main.java
index 9d819274d73..b99598aa4de 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/launcher/Main.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/launcher/Main.java
@@ -135,7 +135,7 @@ public class Main {
             System.exit(1);
         } catch (InvocationTargetException e) {
             // leave VM to handle the stacktrace, in the standard manner
-            throw e.getTargetException();
+            throw e.getCause();
         }
     }
 
@@ -422,7 +422,7 @@ public class Main {
         } catch (InvocationTargetException e) {
             // remove stack frames for source launcher
             int invocationFrames = e.getStackTrace().length;
-            Throwable target = e.getTargetException();
+            Throwable target = e.getCause();
             StackTraceElement[] targetTrace = target.getStackTrace();
             target.setStackTrace(Arrays.copyOfRange(targetTrace, 0, targetTrace.length - invocationFrames));
             throw e;
diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMObjectFactory.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMObjectFactory.java
index 67476c5ca4b..5380b8bb0bd 100644
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMObjectFactory.java
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMObjectFactory.java
@@ -58,8 +58,8 @@ public class VMObjectFactory<T extends VMObject> {
       return c.newInstance(new Object[] { addr });
     }
     catch (java.lang.reflect.InvocationTargetException ite) {
-        if (ite.getTargetException() instanceof RuntimeException) {
-            throw (RuntimeException)ite.getTargetException();
+        if (ite.getCause() instanceof RuntimeException) {
+            throw (RuntimeException)ite.getCause();
         }
         throw new ConstructionException(ite);
     }
diff --git a/src/jdk.jconsole/share/classes/sun/tools/jconsole/inspector/Utils.java b/src/jdk.jconsole/share/classes/sun/tools/jconsole/inspector/Utils.java
index aec798c87da..b321cd3da86 100644
--- a/src/jdk.jconsole/share/classes/sun/tools/jconsole/inspector/Utils.java
+++ b/src/jdk.jconsole/share/classes/sun/tools/jconsole/inspector/Utils.java
@@ -288,7 +288,7 @@ public class Utils {
         try {
             return c.newInstance(param);
         } catch (InvocationTargetException e) {
-            Throwable t = e.getTargetException();
+            Throwable t = e.getCause();
             if (t instanceof Exception) {
                 throw (Exception) t;
             } else {