2010-02-10 3 views
0

명령 프롬프트에서 Java 프로그램을 실행 중입니다. 나는 "C : \ j2sdk1.4.2_09 \ bin"을 PATH System 변수에 설정했습니다. 그런 다음 컴파일하고 실행할 수 있습니다. 그러나 mysql 커넥터를 설정해야하므로 "C : \" mysql-connector-java-5.1.10 \ mysql-connector-java-5.1.5-bin.jar " CLASSPATH 변수를 사용하지만 프로그램을 실행할 때 프로그램을 컴파일 할 수있게되었습니다. lang.NoClassFoundDefError ". 어때? 아무도 이것에 정교 할 수 있니?CLASSPATH 및 PATH에 혼동이 있음

답변

5

당신이 여기에서 묻는 것은 상당히 명확하지 않습니다. CLASSPATH를 변경했는데 클래스를 찾을 수 없다는 말입니까?

CLASSPATH에는 기본적으로 현재 디렉토리가 포함되지 않습니다. 당신은 당신이 CLASSPATH에 원하는 경우

set CLASSPATH=.;C:\mysql-connector-java-5.1.10\mysql-connector-java-5.1.5-bin.jar 

:, 예컨대 그것을 (.)를 추가 (I 그의 시작 부분에 .;을 넣고 있습니다.)

PATH와 CLASSPATH가 완전히 관련이없는해야합니다. PATH는 명시 적 경로를 지정하지 않고 실행 파일을 실행할 때 Windows가 실행 가능 프로그램을 찾을 위치를 알려줍니다 (현재 디렉토리를 암시 적으로 포함합니다). CLASSPATH는 Java 런타임에서 클래스를로드 할 수있는 위치를 알려줍니다.

사과가 완전히 벗어난 경우 사과합니다. 그렇다면 귀하의 질문을 명확히 할 수 있습니까?

+0

우리가 경로를 추가하고 두 클래스 패스 할 수이 링크를 참조하시기 바랍니다에 CLASSPATH를 들어

? – Tanveer

0

위의 대답에 동의합니다. 수 백만 번 나 자신을 수행했기 때문입니다. 예외는 거의 클래스 경로와 관련이 있습니다. 이는 자바에게 현재 디렉토리를 클래스에 포함 시키도록 지시한다.

자바가 자동으로 현재 디렉토리를 검색에 포함시키지 않는 것처럼 보이지만 클래스 패스를 직접 수동으로 덮어 쓰면 언제든지 포함시켜야합니다.

이유는 무엇입니까? classpath를 지정하지 않으면 "."을 포함하고 사용자에게 투명한 기본 경로가 사용됩니다.

0

귀하의 질문에 대답하기 전에, 그냥 간단한 질문이 있습니다 : 왜 우리는 PATH 및 CLASSPATH가 필요합니까?

답변 :

1) 경로 : 당신은 런타임에 클래스를로드하기 위해서 자바 클래스 파일 및 운영 시스템을 구축, 자바 소스 코드를 컴파일 PATH를 설정해야합니다.

2) CLASSPATH : 자바 클래스 경로 찾을 자바 program.This의 부하 클래스가 JVM에 의해이 아니라 OS에 의해 사용되는 클래스 로더에 의해 사용되는 디렉토리 또는 디렉토리 목록에 경로입니다. 이 모든 예를 들어 exe를 포함 빈 디렉토리를 가리 키도록

수정 PATH 변수 (Windows 시스템 환경 변수가) : 내 경우에는 자바, javac의 등을가 이렇게 있습니다 : ; C : \ 프로그램 파일 \ Java \ jre7 \ bin.

클래스 경로는 경우를 구분 -cp 또는 -classpath 명령 행 옵션이나 자바의 JAR 파일 내의 MANIFEST.MF 파일의 클래스 경로 속성입니다 CLASSPATH 환경 변수를 사용하여 지정할 수 있습니다.자세한 내용은 "http://javarevisited.blogspot.in/2011/01/how-classpath-work-in-java.html는"