/*
 * Copyright (c) 1995, 2004, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package java.lang;

Thrown when an application tries to load in a class through its string name using:
  • The forName method in class Class.
  • The findSystemClass method in class ClassLoader .
  • The loadClass method in class ClassLoader.

but no definition for the class with the specified name could be found.

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 getException() method is now known as the cause, and may be accessed via the Throwable.getCause() method, as well as the aforementioned "legacy method."

Author: unascribed
See Also:
Since: 1.0
/** * Thrown when an application tries to load in a class through its * string name using: * <ul> * <li>The <code>forName</code> method in class <code>Class</code>. * <li>The <code>findSystemClass</code> method in class * <code>ClassLoader</code> . * <li>The <code>loadClass</code> method in class <code>ClassLoader</code>. * </ul> * <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." * * @author unascribed * @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) * @since 1.0 */
public class ClassNotFoundException extends ReflectiveOperationException {
use serialVersionUID from JDK 1.1.X for interoperability
/** * use serialVersionUID from JDK 1.1.X for interoperability */
private static final long serialVersionUID = 9176873029745254542L;
This field holds the exception ex if the ClassNotFoundException(String s, Throwable ex) constructor was used to instantiate the object
@serial
Since:1.2
/** * This field holds the exception ex if the * ClassNotFoundException(String s, Throwable ex) constructor was * used to instantiate the object * @serial * @since 1.2 */
private Throwable ex;
Constructs a ClassNotFoundException with no detail message.
/** * Constructs a <code>ClassNotFoundException</code> with no detail message. */
public ClassNotFoundException() { super((Throwable)null); // Disallow initCause }
Constructs a ClassNotFoundException with the specified detail message.
Params:
  • s – the detail message.
/** * Constructs a <code>ClassNotFoundException</code> with the * specified detail message. * * @param s the detail message. */
public ClassNotFoundException(String s) { super(s, null); // Disallow initCause }
Constructs a ClassNotFoundException with the specified detail message and optional exception that was raised while loading the class.
Params:
  • s – the detail message
  • ex – the exception that was raised while loading the class
Since:1.2
/** * Constructs a <code>ClassNotFoundException</code> with the * specified detail message and optional exception that was * raised while loading the class. * * @param s the detail message * @param ex the exception that was raised while loading the class * @since 1.2 */
public ClassNotFoundException(String s, Throwable ex) { super(s, null); // Disallow initCause this.ex = ex; }
Returns the exception that was raised if an error occurred while attempting to load the class. Otherwise, returns null.

This method predates the general-purpose exception chaining facility. The Throwable.getCause() method is now the preferred means of obtaining this information.

Returns:the Exception that was raised while loading a class
Since:1.2
/** * 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. * The {@link Throwable#getCause()} method is now the preferred means of * obtaining this information. * * @return the <code>Exception</code> that was raised while loading a class * @since 1.2 */
public Throwable getException() { return ex; }
Returns the cause of this exception (the exception that was raised if an error occurred while attempting to load the class; otherwise null).
Returns: the cause of this exception.
Since: 1.4
/** * Returns the cause of this exception (the exception that was raised * if an error occurred while attempting to load the class; otherwise * {@code null}). * * @return the cause of this exception. * @since 1.4 */
public Throwable getCause() { return ex; } }