본문 바로가기
Java/Java with Error

[해결 방법] java.lang.ClassNotFoundException

by HJ0216 2023. 2. 21.

 기본 환경: IDE: Eclipse, Language: Java

 

 

발생 Error

Java에서 다음 Source Code를 실행할 경우,

package temp;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class Tmp {
	Scanner scan = new Scanner(System.in);

	private Connection conn;
	private PreparedStatement pstmt;

	// DB 변경 시, 변수 활용(환경 설정)
	private String driver = "oracle.jdbc.driver.OracleDriver";
	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String userName = "C##JAVA";
	private String passWord = "1234";

	public Tmp() {
		try {
			Class.forName(driver);
		} catch(ClassNotFoundException e) {
			e.printStackTrace();
		}
		this.getConnection(); // 접속

	}

	// 접속
	public void getConnection() {
		try {
			conn = DriverManager.getConnection(url, userName, passWord);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
		
	public void menu() {
		Tmp std = new Tmp();		

		while(true) {
			System.out.println();
			System.out.println("****************");
			System.out.println("   관리");
			System.out.println("****************");
			System.out.println("  1. 입력");
			System.out.println("  2. 검색");
			System.out.println("  3. 삭제");
			System.out.println("  4. 종료");
			System.out.println("****************");
			System.out.print("  번호선택 :");
			int num = scan.nextInt();
			
			if(num==4) {}
			
			if(num==1) {}
			else if(num==2) {}
			else if(num==3){}
			else {}
		
		} // while
	}
	

	public static void main(String[] args) {
		Tmp std = new Tmp();		
		std.menu();

	}
}

다음과 같은 OracleDriver에 대한 ClassNotFoundException 발생

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:375)
	at temp.Tmp.<init>(Tmp.java:24)
	at temp.Tmp.main(Tmp.java:69)

 

 

Exception 원인

해당 Java Project에 jar 파일 lib 설치 및 build path를 설정하지 않음

 

 

해결 방법

 

좌측 그림과 같이 Java Project별로

1. 일반 lib 폴더 생성

2. lib 폴더에 ojdbc8.jar 파일 저장

3. Build: Start to build path 설정