Assume the following classesprogram
|——–>Test.java
|———>Demo.java
|——–>Test.java
|———>Demo.java
Test.java
———-
public class Test{}
———-
public class Test{}
Demo.java
————-
————-
1
2
3
4
5
6
7
| public class Demo { public static void main(String s[]) throws Exception { Class.forName( "Test" ); //line 1 Test t= new Test(); //line 2 } } |
Observation
ClassNotFoundException
———————————
You keep only line 1(comment line 2),and compile and execute Demo.java,(Donot compile Test.java)it will give you ClassNotFoundException
What ever String you are passing in Class.forName(“—”) is a class name,and it should be there
solution: Compile both the java files and then execute Demo class
ClassNotFoundException
———————————
You keep only line 1(comment line 2),and compile and execute Demo.java,(Donot compile Test.java)it will give you ClassNotFoundException
What ever String you are passing in Class.forName(“—”) is a class name,and it should be there
solution: Compile both the java files and then execute Demo class
NoClassDefFoundError
————————————–
Keep Only line 2(comment line 1),and compile and Execute Demo.java.The program successfully compiles & Executes.It is because,when ur class Demo is using class Test,then No need to compile Test.java,when you compile Demo.java,it auto compiles Test.java
————————————–
Keep Only line 2(comment line 1),and compile and Execute Demo.java.The program successfully compiles & Executes.It is because,when ur class Demo is using class Test,then No need to compile Test.java,when you compile Demo.java,it auto compiles Test.java
So when will I get Error? Just remove . from ur classpath & recompile
In classpath generally we add ;. at last.
This is because,when the JVM looks for the classes,it looks in classpath and when it sees . , it understands that it has to look in the current working directory also.
This is because,when the JVM looks for the classes,it looks in classpath and when it sees . , it understands that it has to look in the current working directory also.
But if you remove . from classpath,then here auto-compilation will not take place,means you have to compile all the classfiles using javac *.java.
Even after you have compiled both the classes,if u try to execute it,it will still show you NoClassDefFoundError,because u have removed . from classpath variable
Now comment both line1 & line 2,and again recompile only Demo.java
Compilation will be successful,but While execution it will give you sameNoClassDefFoundError
Solution: include ;. at your classpath
Now comment both line1 & line 2,and again recompile only Demo.java
Compilation will be successful,but While execution it will give you sameNoClassDefFoundError
Solution: include ;. at your classpath
No comments:
Post a Comment