Java Runtime errors

https://java.com

Core environment and runtime library

Documented:

Top patterns

  1. A class that is not available on the classpath or the class loader is closed

    java.lang.ClassNotFoundException is one of the most frequent exceptions in Java. It is a runtime error, however, it does not signal a bug in your application logic, but rather an issue with the environment (build system, dependency management, runtime environment, etc.)

    According to the javadoc, it "is thrown when an application tries to load in a class through its string name". There are several different situations leading to this error and you have to examine the stack trace thoroughly to be able to decide how to solve this problem.

    The first thing to check is whether you get this checked exception directly, or wrapped in a java.class.NoClassDefFoundException. The latter happens when the class not found was resolved during compilation time, but not found during runtime, which is a bit different than the first case and it needs special care. If this is what happened to you, then you should read that article (coming soon).

    Next we ask what is the class that was not found. Fortunately, in most cases, you can see it in the message of the exception. If this class was specified by you (either directly in the code, or via a configuration file), double check that you did not misspell it. Some practical advices:

    • Make sure you use the fully qualified name of the class (e.g. org.postgresql.ds.PGSimpleDataSource)
    • When loading a nested class, make sure you use the proper name (joined with a $ sign, e.g. test.MyClass$InnerClass).
    • If you are unsure, you can check the name of the class in the code by using MyClass.class.getName()

    If none of the above helped then you have an issue with your classpath, which requires some time and experience to resolve. When the java.lang.ClassNotFoundException is related to a third party library, you might want to ask for help in their support forums. However, if you want to debug it yourself, let me equip you with some theoretical and practical knowledge.

    • To understand what is class loading in Java, start with this StackOverflow question or the Java Language Specification §12.2. Roughly speaking, the classes that your application use are located in jar files on the file system. The classpath is a list of jar files which are searched through when your application loads a class. The java.lang.ClassNotFoundException means that the class you wanted to load is not present in any of the jar files on the classpath.
    • The configuration of your classpath depends on your runtime environment (i.e. do you run the application from console, from IDE, web container, etc), you can find more information on the specific forums. However, if you can use breakpoints to stop at specific points in your application, stop at the first line of java.net.URLClassLoader.findClass and check the value of the field ucp.
    • You should have an idea on which jar file contains the class that could not be loaded, and look for that jar in the classpath. If it is not there, you have to add that jar to the classpath (precise details depend on the runtime environment).
    • If you find the jar you suspect to contain your class, check if it is true by opening the jar file (they are simple zip files actually) and look for the class definition in the directory structure in it (the directory structure must be identical to the package structure of the java code). At this point you should realize that the class is not present, otherwise the problem would have been found previously during debugging.
    • There are two reasons for class not being present in the jar: the first is that you have an incorrect version of the library you wanted to use. To fix this, you have to tweak your build system (maven, ant, sbt, gradle etc) by making sure that you configured the right version of the library as the dependency, and that you don’t have conflicting library versions. To find out how to do this, look for help on the forums of that build system.
    • The other reason of the class not being present is that it’s a bug in that library. If this is a third-party library, you might want to check the support forum and the release notes. If this library was written by you, then try to rebuild this library and check if the class you look for is present in the resulting jar file.
  2. ClassLoader.loadClass() has thrown a ClassNotFoundException
    No solution
  3. The class could not be found

    This error pattern looks similar to error pattern 88439.

    However, in this case, we are sure that this happens when sun.misc.URLClassPath.getResource(String name, boolean check) returns null. Practically every exception that happens in getResource is handled by returning null.


DescriptionException TypeEntry MethodWeb pages
NoClassDefFoundErrorClassLoader.loadClassInternal546
NoClassDefFoundErrorClassLoader.loadClassInternal248
NoClassDefFoundErrorClassLoader.loadClassInternal186
NoClassDefFoundErrorClassLoader.loadClassInternal111
NoClassDefFoundErrorClassLoader.loadClassInternal67
NoClassDefFoundErrorClassLoader.loadClassInternal43
NoClassDefFoundErrorClassLoader.loadClassInternal33
NoClassDefFoundErrorClassLoader.loadClassInternal32
NoClassDefFoundErrorClassLoader.loadClassInternal30
NoClassDefFoundErrorClassLoader.loadClassInternal24
NoClassDefFoundErrorClassLoader.loadClassInternal23
NoClassDefFoundErrorClassLoader.loadClassInternal22
NoClassDefFoundErrorClassLoader.loadClassInternal21
NoClassDefFoundErrorClassLoader.loadClassInternal18
NoClassDefFoundErrorClassLoader.loadClassInternal18
NoClassDefFoundErrorClassLoader.loadClassInternal16
NoClassDefFoundErrorClassLoader.loadClassInternal14
NoClassDefFoundErrorClassLoader.loadClassInternal13
NoClassDefFoundErrorClassLoader.loadClassInternal11
NoClassDefFoundErrorClassLoader.loadClassInternal11
NoClassDefFoundErrorClassLoader.loadClassInternal11
NoClassDefFoundErrorClassLoader.loadClassInternal9
NoClassDefFoundErrorClassLoader.loadClassInternal9
NoClassDefFoundErrorClassLoader.loadClassInternal8
NoClassDefFoundErrorClassLoader.loadClassInternal8
NoClassDefFoundErrorClassLoader.loadClassInternal7
NoClassDefFoundErrorClassLoader.loadClassInternal6
NoClassDefFoundErrorClassLoader.loadClassInternal6
NoClassDefFoundErrorClassLoader.loadClassInternal6
NoClassDefFoundErrorClassLoader.loadClassInternal5
NoClassDefFoundErrorClassLoader.loadClassInternal5
NoClassDefFoundErrorClassLoader.loadClassInternal5
NoClassDefFoundErrorClassLoader.loadClassInternal5
NoClassDefFoundErrorClassLoader.loadClassInternal5
NoClassDefFoundErrorClassLoader.loadClassInternal5
NoClassDefFoundErrorClassLoader.loadClassInternal5
NoClassDefFoundErrorClassLoader.loadClassInternal4
NoClassDefFoundErrorClassLoader.loadClassInternal4
NoClassDefFoundErrorClassLoader.loadClassInternal4
NoClassDefFoundErrorClassLoader.loadClassInternal4
NoClassDefFoundErrorClassLoader.loadClassInternal4
NoClassDefFoundErrorClassLoader.loadClassInternal4
NoClassDefFoundErrorClassLoader.loadClassInternal4
NoClassDefFoundErrorClassLoader.loadClassInternal3
NoClassDefFoundErrorClassLoader.loadClassInternal3
NoClassDefFoundErrorClassLoader.loadClassInternal3
NoClassDefFoundErrorClassLoader.loadClassInternal3
NoClassDefFoundErrorClassLoader.loadClassInternal3
NoClassDefFoundErrorClassLoader.loadClassInternal3
NoClassDefFoundErrorClassLoader.loadClassInternal3
Package nameClass namePatterns foundSolution coverageDescription coverage
java.langClassLoader2753
java.langClass2189
java.langThread1470
java.langString309
java.langThrowable216
java.langSystem199
java.langRuntime162
java.langStringBuilder113
java.langSecurityManager105
java.langStringBuffer57
java.langInteger56
java.langDouble49
java.langProcessBuilder48
java.langObject44
java.langAbstractStringBuilder43
java.langException37
java.langLong36
java.langThreadGroup32
java.langFloat29
java.langClassLoader$NativeLibrary23
java.langStringCoding22
java.langProcessImpl16
java.langRuntimeException14
java.langEnum13
java.langThreadLocal12
java.langByte12
java.langUNIXProcess11
java.langCharacter10
java.langNumberFormatException8
java.langClassNotFoundException8
java.langError8
java.langIterable6
java.langShort6
java.langNullPointerException5
java.langClassLoader$14
java.langSecurityException4
java.langNoClassDefFoundError4
java.langLinkageError3
java.langMath3
java.langIllegalArgumentException3
java.langBoolean3
java.langShutdown3
java.langClassCastException3
java.langThreadLocal$ThreadLocalMap3
java.langProcessEnvironment2
java.langPackage2
java.langClassloader2
java.langStringCoding$StringDecoder2
java.langIllegalStateException2
java.langNoSuchMethodError1
Package nameClass nameMethod namePatterns foundSolution coverage
java.langClassLoaderloadClass1911
java.langClassLoaderloadClassInternal379
java.langClassLoaderdefineClass184
java.langClassLoaderdefineClass1100
java.langClassLoadergetResource31
java.langClassLoaderloadLibrary23
java.langClassLoaderdefineClassCond13
java.langClassLoaderdefineClass012
java.langClassLoadergetResourceAsStream9
java.langClassLoadercheckPackageAccess8
java.langClassLoadergetResources8
java.langClassLoaderdefineClassImpl7
java.langClassLoaderloadLibrary07
java.langClassLoaderresolveClass7
java.langClassLoaderfindBootstrapClass6
java.langClassLoaderpreDefineClass4
java.langClassLoaderfindSystemClass4
java.langClassLoaderresolveClass04
java.langClassLoadergetSystemClassLoader3
java.langClassLoaderinitSystemClassLoader3
java.langClassLoadergetPackages3
java.langClassLoader<init>3
java.langClassLoadercheckClassLoaderPermission2
java.langClassLoaderloadLibrary12
java.langClassLoadergetParent2
java.langClassLoaderfindLoadedClass2
java.langClassLoadercheckCerts2
java.langClassLoaderfindClass1
java.langClassLoadergetCallerClassLoader1
java.langClassLoaderdefineClass21
java.langClassLoaderloadLibraryWithPath1
java.langClassLoadercheckName1
java.langClassLoadergetClassLoadingLock1
java.langClassLoader__tc_getClassLoaderName1
java.langClassLoaderloadLibraryWithClassLoader1
java.langClassLoaderdefinePackage1
java.langClassLoaderfindBootstrapClass01
java.langClassLoaderinit1
java.langClassLoaderloadClassHelper1
java.langClassLoadergetSystemResource1
java.langClassLoadercheckCreateClassLoader1
Package nameClass nameMethod nameException TypePatterns foundSolution coverage
java.langClassLoaderloadClassInternalClassNotFoundException97
java.langClassLoaderloadClassInternalNoClassDefFoundError67
java.langClassLoaderloadClassInternalSecurityException31
java.langClassLoaderloadClassInternalUnsupportedClassVersionError22
java.langClassLoaderloadClassInternalClassFormatError20
java.langClassLoaderloadClassInternalIncompatibleClassChangeError13
java.langClassLoaderloadClassInternalOutOfMemoryError13
java.langClassLoaderloadClassInternalNullPointerException11
java.langClassLoaderloadClassInternalBundleException10
java.langClassLoaderloadClassInternalIllegalStateException8
java.langClassLoaderloadClassInternalLinkageError8
java.langClassLoaderloadClassInternalVerifyError7
java.langClassLoaderloadClassInternalAccessControlException6
java.langClassLoaderloadClassInternalAbstractBundle$BundleStatusException4
java.langClassLoaderloadClassInternalException4
java.langClassLoaderloadClassInternalEclipseLazyStarter$TerminatingClassNotFoundException3
java.langClassLoaderloadClassInternalNoSuchMethodError3
java.langClassLoaderloadClassInternalAppletSecurityException3
java.langClassLoaderloadClassInternalThreadDeath2
java.langClassLoaderloadClassInternalStackOverflowError2
java.langClassLoaderloadClassInternalIllegalAccessError2
java.langClassLoaderloadClassInternalThrowable2
java.langClassLoaderloadClassInternalAnnotatedNoClassDefFoundError2
java.langClassLoaderloadClassInternalExtendedClassNotFoundException2
java.langClassLoaderloadClassInternaljava2
java.langClassLoaderloadClassInternalInvocationTargetException2
java.langClassLoaderloadClassInternalNoInitialContextException1
java.langClassLoaderloadClassInternalServiceException1
java.langClassLoaderloadClassInternaljava1
java.langClassLoaderloadClassInternaljava1
java.langClassLoaderloadClassInternalUnsupportedClassVersionError1
java.langClassLoaderloadClassInternalAnnotatedClassFormatError1
java.langClassLoaderloadClassInternaljava1
java.langClassLoaderloadClassInternalFunction1
java.langClassLoaderloadClassInternalInvalidJarIndexException1
java.langClassLoaderloadClassInternalZipException1
java.langClassLoaderloadClassInternalAnnotatedClassNotFoundException1
java.langClassLoaderloadClassInternaljava1
java.langClassLoaderloadClassInternalCoreException1
java.langClassLoaderloadClassInternalIExplorerPlugin1
java.langClassLoaderloadClassInternalIOException1
java.langClassLoaderloadClassInternalExceptionInInitializerError1
java.langClassLoaderloadClassInternalInternalCompilerException1
java.langClassLoaderloadClassInternalDownloadException1
java.langClassLoaderloadClassInternalAssertionFailedError1
java.langClassLoaderloadClassInternalAppletSecurityException1
java.langClassLoaderloadClassInternalutil1
java.langClassLoaderloadClassInternalUserDataHandler1
java.langClassLoaderloadClassInternalSQLServerDriver1
java.langClassLoaderloadClassInternalThreadPool1