2009-11-07 4 views
0

그래서 학교 프로그램을위한 SQLite DB를 액세스하고 수정하는 프로그램을 작성해야하며, 먼저 기본 사항을 살펴보아야합니다. 지금, 나는 이것을 시작하기 위해 이것을보고있다 : link text. 문제는 그 내가 명령 Test.java (웹 사이트에서 예제 코드)를 컴파일하고 실행하면 그것은 나에게 말한다처럼SQLite JDBC 드라이버를로드 할 수 없습니다. 어떤 아이디어입니까?

java -cp .:sqlitejdbc-v056.jar Test 

을 위해, 나는 다음과 같은 오류 얻을 :

Exception in thread "main" java.lang.NoClassDefFoundError: Test 
Caused by: java.lang.ClassNotFoundException: Test 
    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) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
Could not find the main class: Test. Program will exit. 

을 Test.java, Test.class 및 sqlitejdbc-v056.jar은 모두 같은 폴더에 있으므로 서로 찾아야합니다. 아무도 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?

답변

1

예외 메시지가 말하는 것처럼 문제는 테스트 클래스를 찾을 수 없다는 것입니다. 그래서 문제는 SQLite를 찾는 것이 아니라 Test 클래스를 찾는 것입니다.

그냥 추측하지만, 컴파일 방법에 문제가 있는지 궁금합니다. Test.java에서 클래스는 패키지에 속해 있습니까? 그렇다면 -d 플래그를 사용하여 컴파일하여 적절한 서브 디렉토리에 넣어야합니다.

4

java.lang.NoClassDefFoundError: Test에 따르면 Test 클래스는 CLASSPATH에서 찾을 수 없습니다. 그러나 당신은 Test.class이 현재 디렉토리에서 사용 가능하다고 썼습니다. 그래서 나는 뭔가를 추측 할 것입니다. 사실, 당신은 올바른 CLASSPATH 구분 문자 (플랫폼에 따라 다름)를 사용하지 않아서 CLASSPATH를 올바르게 작성하지 못하고 있다고 생각합니다. Windows에서는 : 대신 ;을 사용해야합니다. 이 경우로 발생하는 경우, 당신이 시도해야합니다 :

당신이 유닉스 플랫폼에있는 경우
java -cp .;sqlitejdbc-v056.jar Test 

이이 답을 잊어, 문제는 다른 곳에있다.

+1

좋은 분석. 클래스 패스는 악명이 높습니다. –

+0

내 문제를 해결해 주셔서 대단히 감사합니다. 은 이들 사이의 차이점은 무엇입니까하지만 궁금 해서요 :.. 자바 -cp가, sqlitejdbc-v056.jar 테스트를 자바 -cp을, sqlitejdbc-v056.jar Test.class라는 내가 "의 .class"를 넣으면 때문에 결국에는 오류가 발생합니다. 감사합니다. – ManBeast

+0

내 문제를 해결해 주셔서 대단히 감사합니다. "java -cp.; sqlitejdbc-v056.jar Test"와 "java -cp.; sqlitejdbc-v056.jar Test.class"두 명령의 차이점은 무엇일까? .class "끝에, 나는 오류가 발생합니다. 감사합니다. – ManBeast

관련 문제