2010-03-26 3 views
3

내가 명령 줄에서 간단한 자바 JDBC 프로그램을 실행하려고 할 때 다음과 같은 오류를 받고 있어요와 MySQL의에 연결할 때 :ClassNotFoundException가 JDBC

Exception in thread "main" java.lang.NoClassDefFoundError: LoadDriver/java 
Caused by: java.lang.ClassNotFoundException: LoadDriver.java 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 

여기에 오른쪽에서 복사 한 간단한 자바 프로그램이 있어요 JDBC 워드 프로세서 :

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
// Notice, do not import com.mysql.jdbc.* 
// or you will have problems! 
public class LoadDriver { 
    public static void main(String[] args) { 
     try { 
      // The newInstance() call is a work around for some 
      // broken Java implementations 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     } catch (Exception ex) { 
     throw ex; 
      // handle the error 
     } 
    } 
} 

문제는, 나는 확실히 내 bash 쉘 $ 클래스 경로 변수가 올바른 .jar 파일에 놓고 피 묻은입니다. 확실히 JDBC JAR 파일을 내 프로그램과 같은 디렉토리에 복사하고 다음과 같이 실행했습니다.

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 

여전히 동일한 오류가 발생합니다.

편집 :

나는 아래 Powerlord의 제안을 따라 지금은 여전히 ​​거의 같은 예외를 얻고있다.

내가 입력 : 내가 두 번째 명령에 클래스 패스 플래그를 떠나 여부

javac -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 
java LoadDriver 

상관하지 않는 것 같다. 나는 아직도 점점 오전 :

Exception in thread "main" java.lang.NoClassDefFoundError: LoadDriver 
Caused by: java.lang.ClassNotFoundException: LoadDriver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 
+0

CLASSPATH 오류가 발생 했습니까? 정말? : – Bombe

답변

3

구문이 잘못되었습니다.

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver 

(내가 끝에서 '된 .java'를 제거합니다) :

javac -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java ? 

이 그렇다면, 당신이 할 수있을 것입니다 : 당신은 이미 사용 LoadDriver.java를 컴파일

+1

이것은 거의 옳았습니다. 또한 클래스 경로에 ./을 추가해야했습니다. 마지막 명령 줄은 java -classpath ./ :// mysql- .jar LoadDriver –

+0

사실, mysql-connector는 필요하지 않습니다. -java-5.1.12-bin.드라이버를 런타임에 (리플렉션에 의해로드되기 때문에) 컴파일 할 때 classpath에 jar 파일이 있어야합니다. – FRotthowe

2

짧은 버전 :
javac가 마지막에 된 .java를 넣어 당신이 필요 java하지가 마지막에 된 .java를 넣어 당신을 필요로합니다.

Jim Garrison이 대답을 삭제하기 전에 지적했듯이이 프로그램을 실행하는 명령 줄은 잘못되었습니다.

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 

이 실제로

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver 

당신이

javac -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 
0

문제를 먼저 컴파일 물론 제공되며 원하는 것은 LoadDriver/java.class

를로드하는 자바되는 이야기가 아니라 누락 된 드라이버, 누락 된 LoadDriver 클래스입니다. 먼저 .java 소스 파일을 .class 파일로 컴파일해야합니다.

javac LoadDriver.java