How To Resolve Java.Lang.Classnotfoundexception Inward Java

What is ClassNotFoundException inward Java
ClassNotFoundException is ane of Java nightmare every Java developer confront inward at that spot hateful solar daytime to hateful solar daytime life. java.lang.NoClassDefFoundError as well as java.lang.ClassNotFoundException are 2 errors  which occurs past times as well as at ane time as well as chew upwards of your precious fourth dimension land finding as well as fixing rootage cause. From the cite java.lang.ClassNotFoundException looks quite uncomplicated but underlying displace of it is e'er dissimilar and which classifies it every bit an environmental issue. In this coffee tutorial nosotros volition see what is ClassNotFoundException inward java, what is existent displace of it and how to cook it along amongst just about to a greater extent than frequent as well as infamous examples of java.lang.ClassNotFoundException inward Java or J2EE, Don’t mistake this exception amongst NoClassDefFoundError inward Java which is every bit good due to wrong classpath inward Java.  Though both of them are related to missing shape file when Java tries to charge shape inward Java they are completely dissimilar to each other.  Correct agreement of  When shape is loaded inward Java as well as How Classpath works  is must to troubleshoot as well as cook this error quickly.


What is java.lang.classNotFoundException inward Java

As the cite suggests classNotFoundException in Java is a subclass of java.lang.Exception as well as Comes when Java Virtual Machine tries to charge a item shape as well as doesn't establish the requested shape inward classpath. Another of import bespeak almost this Exception is that, It is a checked Exception as well as yous ask to furnish explicitly Exception treatment land using methods which tin forcefulness out maybe throw classnotfoundexception inward coffee either past times using try-catch block or past times using throws clause. Though underlying concept of this exception is uncomplicated but it e'er manifest itself inward such format that yous ask to pass just about fourth dimension to figure out what precisely wrong amongst your classpath. If yous desire to know nasty secrets of coffee classpath  which tin forcefulness out displace effect consider the link




When ClassNotFoundException occurs inward Java:

As per java physician java.lang.classNotFoundException comes inward next cases:

1) When nosotros endeavor to charge a shape past times using Class.forName() method as well as .class file or binary of shape is non available inward classpath.
2) When Classloader try to charge a shape past times using findSystemClass () method.
3) While using loadClass() method of shape ClassLoader in Java.

Reflection is neat ability of Java but yous ask to last aware of java.lang.classNotFoundException land using it or loading shape inward Java. See Understanding the Java Virtual Machine: Class Loading as well as Reflection to acquire to a greater extent than almost how precisely shape loading plant within JVM.


Examples of classnotfoundexception inward java

Though java.lang.classNotFoundException is rattling mutual as well as it tin forcefulness out come upwards for whatsoever classes, I unremarkably consider it land doing JDBC connectivity similar when I was writing Java plan to connect Oracle database. I am going to listing just about of the most mutual scenario where yous volition acquire classnotfoundexception inward java.

java.lang.classnotfoundexception com.mysql.jdbc.driver

This is classical as well as most infamous illustration of  as well as every bit good my showtime run across with java.lang.ClassNotFoundException as well as comes when yous are writing JDBC connectivity code as well as trying to charge the JDBC driver. In this item instance of ClassNotFoundException looks similar mysql driver jolt file is missing from Classpath. If yous pay attending yous volition uncovering that nosotros purpose method Class.forName (“driver”) to charge the driver shape which resides inward a item jolt inward instance of this its mysql-connector.jar as well as if that jolt is non inward classpath or non accessible to JVM it volition throw  java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Here are few to a greater extent than infamous examples of java.lang.ClassnotFoundException which comes hither as well as at that spot land doing whatsoever Java J2EE project. 
java.lang.classnotfoundexception org.hibernate.hql.ast.hqltoken
java.lang.classnotfoundexception org.springframework.web.context.contextloaderlistener
java.lang.classnotfoundexception org.eclipse.core.runtime.adaptor.eclipsestarter
java.lang.classnotfoundexception org.apache.catalina.startup.catalina
java.lang.classnotfoundexception javax.mail.messagingexception
java.lang.classnotfoundexception oracle.jdbc.driver.oracledriver

This ClassNotfoundException comes when yous are trying to connect Oracle database from Java plan using JDBC but yous don't receive got corresponding Oracle driver e.g.ojdbc6.jar is non inward classpath of your Java program

More Complicated ClassNotFoundException

With the advent of dynamic library e.g. OSGi and ClassLoader inward Java, this exception tin forcefulness out last to a greater extent than tricky as well as difficult to find. Thanks to Mr. Anonymous who has summarized this beautifully, hither it is what he says
“It tin forcefulness out leave of absence a fighting to a greater extent than complicated than that. In truth a shape does non receive got to last just visible past times the JVM through its classpath, but last visible past times the Classloader being used. When yous are inward a multi-classloader environment (In a EE environment, for example, but non express to), each classloader may receive got its ain rules to search for the classes, as well as this behaviour mightiness depend on the dynamic hierarchy of the Classloaders.
For example, inward a projection that uses an EAR packaging amongst WARs within it, libraries inward the lib folder of the EAR are visible to classes within a WAR, but whatsoever classes packaged inward a jolt rate inward the WEB-INF/lib on the WAR cannot last seen past times classes inward dissimilar modules (other WARs, EJB-JARS, etc).
It tin forcefulness out acquire actually complicated every bit its mutual for dissimilar modules depending on dissimilar versions of the same libraries every bit dissimilar modules depend on each other. It tin forcefulness out last a challenge to care this. Sometimes the classloader can consider multiple versions of the same class; sometimes they tin forcefulness out consider no version at all. Sometimes dissimilar dependency paths halt inward dissimilar versions of the same class. And many of this cases halt inward a ClassNotFoundException.
And therefore nosotros receive got OSGi... “. If a shape is non visible to ClassLoader than it tin forcefulness out every bit good throw NoClassDefFoundError in Java every bit explained in  3 ways to resolve NoClassDefFoundError inward Java.

How to cook java.lang.ClassNotFoundException inward Java
As yous receive got seen from higher upwards examples its clear work of classpath, therefore hither is
my approach to cook or resolve java.lang.ClassNotFoundException:

1) First uncovering out the jolt file on which problematic shape file is introduce for illustration inward instance of "
com.mysql.jdbc.driver" its mysql-connector-java.jar. If yous don't know how to uncovering which jar file a item shape yous tin forcefulness out consider eclipse shortcuts to exercise that or yous tin forcefulness out just exercise "Ctrl+T" inward Eclipse as well as type the cite of class, It volition listing all the jolt inward the gild they appear inward eclipse classpath.

2) Check whether your classpath contains that jar, if your classpath doesn't comprise the jolt therefore just add together that shape inward your classpath.

3) If it’s introduce inward your classpath therefore at that spot is high adventure that your classpath is getting overridden or application is using classpath specified inward jolt file or start-up script as well as to cook that yous ask to uncovering the exact classpath used past times your application.


Live illustration of reproducing as well as Fixing ClassNotFoundException inward java
I intend if nosotros are able to reproduce as well as solve sure enough work nosotros leave of absence to a greater extent than comfortable dealing amongst that, that’s why hither nosotros volition reproduce java.lang.ClassNotFoundException and solve it past times next the concept nosotros receive got discussed therefore far.

1)
Create a Class called StockTrading.java

public shape StockTrading{
   populace String getDescription(){
   render "StockTrading";
  }
}


2)
create a Class called OnlineStockTranding.java as well as charge the shape StockTrading.java every bit Class.forName ("stocktrading");

public shape OnlineStockTrading {
   populace static void main(String args[]) throws ClassNotFoundException{
      Class.forName("StockTrading");
      System.out.println("StockTrading shape successfully loaded");
   }
}

3) Compile both Java source file which volition exercise 2 shape files as well as run the plan should run fine.

javin@trading /java:
javac *.java

javin@trading /java:
ls –lrt
-rw-r--r-- 1 javin None  xc Aug 21 09:27 StockTrading.java
-rw-r--r-- 1 javin None 208 Aug 21 09:28 OnlineStockTrading.java
-rwxr-xr-x 1 javin None 282 Aug 21 09:28 StockTrading.class
-rwxr-xr-x 1 javin None 638 Aug 21 09:28 OnlineStockTrading.class

javin@trading /java:$
java OnlineStockTrading
StockTrading shape successfully loaded


4) Now just
remove the .class file for stocktrading.java as well as run the Java program as well as it volition throw java.lang.ClassNotFoundException inward java.

javin@trading /java:
rm StockTrading.class

javin@trading /java:
java OnlineStockTrading
Exception inward thread "main" java.lang.ClassNotFoundException: StockTrading
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)



ClassFoundException vs NoClassDefFoundError vs UnSupportedClassVersionError
There are lots of exceptions inward coffee but these 3 are the ane who most haunted the coffee developer most mainly because these 3 are generally related to environs issues as well as they all depends upon JVM as well as Classpath behaviour. Though they hold back similar at that spot is slight difference betwixt ClassFoundException as well as NoClassDefFoundError as well as UnSupportedClassVersionError as well as nosotros volition highlight those differences hither for slow agreement as well as differentiating these three:

1)
ClassNotFoundException comes on Runtime when requested shape is non available inward classpath as well as mainly due to telephone band to Class.forName () or Classloader.loadClass () or ClassLoader.findSystemClass ().

2)
NoClassDefFoundError comes when problematic shape was introduce when your compiled your application but they are non inward classpath land yous running your program.

3)
UnSupportedClassVersionError is slow to differentiate because it’s related to version of classpath as well as unremarkably comes when yous compile your code inward higher Java version as well as endeavor to run on lower coffee version. Can last resolved just past times using ane coffee version for compiling as well as running your application.

So that's all on
ClassNotFoundException inward java for at ane time , delight allow me know if yous receive got whatsoever tip or  whatsoever personal sense on solving java.lang.ClassNotFoundException inward Java which yous would similar to share.


Further Learning
How to purpose Comparator as well as Comparable inward Java? With example
How Classpath move inward Java? How to laid classpath inward Unix Linux
How to override equals method inward Java
How to implement Thread inward Java ?Example of Runnable interface
Difference betwixt ConcurrentHashMap as well as Collections.synchronizedMap as well as Hashtable inward Java
How to exercise update or take symbolic or soft link inward Unix
What is Abstraction inward coffee ?
What is the divergence betwixt Enumeration as well as Iterator?

Belum ada Komentar untuk "How To Resolve Java.Lang.Classnotfoundexception Inward Java"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel