2012-06-19 3 views
0

Java SNMP 클라이언트를 빌드하려고합니다. 우분투 바탕 화면에 snmpclient라는 폴더가 있습니다. 그 폴더 안에는 메인 클래스 인 Client.java와 메인 클래스에서 사용하는 snmp.jar 라이브러리가 있습니다. Java 컴파일/런타임 클래스 경로 문제

나는 성공적으로 터미널에서 다음 명령을 사용하여 컴파일 관리 :
~/Desktop$ javac snmpclient/Client.java -classpath ./snmpclient/snmp.jar 

은 그 때 나는이 명령을 실행하려고 :

~/Desktop$ java snmpclient.Client -classpath ./snmpclient/snmp.jar 

을하지만 나는 "자바를 얻고있다. lang.ClassNotFoundException "snmp 라이브러리의 클래스를 찾을 수 없다는 오류가 발생했습니다. jar 파일의 압축을 풀어서 내가 사용하는 클래스가 모두 있는지 확인합니다.

어떻게 해결할 수 있습니까?

+0

Client.java의 맨 위에 'package snmpclient;'명령이 있습니까? 우리에게 오류 텍스트도 줘, 많은 도움이된다. – maksimov

+0

네, Client.java 클래스에 설명 된 패키지가 있습니다. 나는 지금 오류를 붙여 넣을 것이다. –

+0

아래 @BrianAgnew가 올바르게 처리했습니다. 그의 대답을 확인하십시오. –

답변

1

나는 따라서 귀하의 인수를 재 배열 : 클래스 경로를 실행하는 클래스를 진행할 때

~/Desktop$ java -classpath ./snmpclient/snmp.jar snmpclient.Client 

하도록. 전체 호출이 있어야한다, 그래서 현재 디렉토리에 클래스 패스 기본적으로 당신이, -classpath를 지정하지 않는 경우 참고 : 수업이있는 곳

~/Desktop$ java -classpath ./snmpclient/snmp.jar:. snmpclient.Client 

가 (즉, 점의) 플러스을 루트 디렉토리를 지정합니다 SNMP jar 파일.

arg는 jar 파일과 콜론으로 구분 된 디렉토리 경로로 구성됩니다. 클래스 패스 설정에 대한 자세한 내용은 here을 참조하십시오.

+0

그 두 번째 라인은 매력처럼 작동했습니다. 나는 아직 이해하지 못했다 ":." 그래도 수업 후에. 설명해 주시겠습니까? 고마워. –

+0

답변을 적절하게 수정했습니다. 아무리 잘하면 알려주지 –

+0

내가 이것을 가지고 있는지 보자 : 콜론없이 명령은 모든 것을 classpath로 해석 할 것이기 때문에 작동하지 않을 것이다. 콜론을 사용하면 클래스 패스와 호출 할 클래스를 구분할 수 있습니다. 그게 다야? 어쨌든 덕분에, 그것은 많은 도움이되었습니다. –

관련 문제