728x90

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

 

 

발생 Error

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

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>testServlet</display-name>
  
  
  <!-- 새로운 Servlet 파일 등록 -->
  <servlet>
  	<servlet-name>CalcServlet</servlet-name>
  	<servlet-class>com.calc.CalcServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>CalcServlet</servlet-name>
  	<url-pattern>/CalcServlet</url-pattern>
  </servlet-mapping>

  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file>
  </welcome-file-list>
</web-app>

 Type 'com.calc.CalcServlet' already exists with same name but different case. Error가 발생하여 Servlet 파일을 만들 수 없음

 

 

Error 원인

Servlet file을 생성 전에 web.xml 파일에 미리 servlet에 대한 정보 설정을 하여, servlet 파일이 존재하는 것으로 취급됨

 

 

해결 방법

web.xml 파일에 servlet 구문을 지운 후, servlet 파일을 생성하고나서 재 입력을하고 진행

728x90
728x90

 기본 환경: 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 설정

 

 

 

 

728x90
728x90

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

 

 

발생 Error

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

package dbtest.dao;

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

public class UpdateMain {
	private Connection conn;
	private PreparedStatement pstmt;
	
	private String driver = "oracle.jdbc.driver.OracleDriver"; // path 설정
	private String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private String userName = "C##JAVA";
	private String passWord = "1234";
	
	public UpdateMain() {
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		System.out.println("Driver Loading");
	} // default Constructor;
	
	public void getConnection() {
		try {
			conn = DriverManager.getConnection(url, userName, passWord);
			System.out.println("conn Success");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	} // getConnection();
	
	public void updateArticle() {
		Scanner scan = new Scanner(System.in);
		System.out.print("검색할 이름 입력: ");
		String search_name = scan.next();
		String ss_name = "%" + search_name + "%";
		
		this.getConnection();
		
		String sql = "UPDATE DBTEST SET AGE=AGE+1 HEIGHT=HEIGHT+1 WHERE NAME LIKE '?'";
	
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, ss_name);
			
			int num_update = pstmt.executeUpdate();
			System.out.println(num_update + "개의 행이 업데이트되었습니다.");
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstmt!=null) {pstmt.close();}
				if(conn!=null) {conn.close();}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
	
	
	public static void main(String[] args) {
		UpdateMain um = new UpdateMain();
		um.updateArticle();
	}
}


/*
검색할 이름 입력 : 홍 -> %홍%
홍이 들어간 레코드의 나이와 키를 1씩 증가
*/

java.sql.SQLException: 부적합한 열 인덱스 발생

 

 

Exception 원인

UPDATE DBTEST SET AGE=AGE+1 HEIGHT=HEIGHT+1 WHERE NAME LIKE ?

UPDATE를 실행 할 col을 구분하지 않음(SQL 구문 입력 실수)

 

 

해결 방법

AGE=AGE+1 HEIGHT=HEIGHT+1

-> AGE=AGE+1, HEIGHT=HEIGHT+1

		String sql = "UPDATE DBTEST SET AGE=AGE+1, HEIGHT=HEIGHT+1 WHERE NAME LIKE ?";
	
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, "%" + search_name + "%");
			
			int num_update = pstmt.executeUpdate();
			System.out.println(num_update + "개의 행이 업데이트되었습니다.");
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstmt!=null) {pstmt.close();}
				if(conn!=null) {conn.close();}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
728x90
728x90

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

 

발생 Error

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

public class PrimitiveError {
    public static void main(String[] args) {
    
        double a = 1.1;
        System.out.println(a.getClass());
    
    }

}

 Unresolved compilation problem: 

Cannot invoke getClass() on the primitive type double 발생

 

 

Error 원인

Primitive type variable: getClass() 호출 불가능

Primitive type Wrapper Class
boolean
char
byte / short / int / long
float / double
Boolean
Character
Byte / Short / Integer / Long
Float / Double

 

 

해결 방법

객체 선언을 위한 Wrapper class 사용: Double a = New Double(1.1);

public class PrimitiveError {
    public static void main(String[] args) {
    
        // double a = 1.1;
        Double a = new Double(1.1);
        System.out.println(a.getClass());
    
    }

}

// class java.lang.Double

 

 

 

 

728x90
728x90

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

 

발생 Error

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

public class ArgsNull {

	public static void main(String[] args) {
		String[] strArr = {"Com", "pu", "ter"};
		String inputId = args[0];
	}
}

Index 0 out of bounds for length 0

java.lang.ArrayIndexOutOfBoundsException 발생

 

 

Error 원인

String[] args에 배열값을 입력하지 않음

 

 

해결 방법

Run→Run Configuration→Arguments에 값 입력

⚠️ Run Configuration하기 전에 Run을 적어도 1번은 해야 해당 java 파일이 보임

⚠️ Names에 작업하려는 java file이 맞는지 확인

 

728x90