2017-12-12 10 views
0

내 프로그램이 Java를 사용하여 전자 메일을 보내려고 시도했지만 매우 실패했습니다. 수업과 관련된 오류가 계속 발생합니다.SMTP (Java)를 통해 전자 메일을 보내려 고 시도하는 동안 java.lang.NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataHandler at Running.main(Running.java:22).

Caused by: java.lang.ClassNotFoundException: javax.activation.DataHandler

내가 점점 오전 오류는 코드 줄에 : java.lang.ClassNotFoundException: javax.activation.DataHandler :

Message msg = new MimeMessage(session);

+0

mail.jar, activation.jar에 대해 classpath를 올바르게 설정 했습니까? –

답변

0

이 줄을 참조하십시오. 즉, DataHandler 클래스를 찾을 수 없으므로 예외가 발생했습니다. 빠른 검색에서 누락 된 클래스가 JAF (activation.jar)에 속한다는 것을 알게되었습니다.

기본 사항 : 컴파일하는 동안 파일이 검색되는 위치는 어디입니까?

  1. 자바 컴파일 중에 사용자가 지정한 원본 디렉토리. 일반적으로 Maven의 경우 pom.xml 또는 Gradle의 경우 build.gradle과 같은 모든 빌드 구성 파일을 통해 수행됩니다.

  2. 종속성은 일반적으로 클래스 경로에 정의되어 저장됩니다. 클래스 경로는 javac 컴파일러가 소스 파일에 정의되지 않은 클래스를 검색하는 일련의 디렉토리 (또는 zip 파일)입니다. 클래스 패스에 항아리 누락 추가하여

차단 해제를 follow this for eclipse :

  1. 가 클래스 패스에 javax.activation 항아리를 추가하고이 문제를 해결 있는지 확인합니다. 당신이 SMTP를 통해 메일을 보내려고하기 때문에

  2. , 당신은 대신 클래스 경로에 JavaMail (mail.jar)을 추가 할 수 있으며, 다른 activation.jar 자동으로 인해 전이 종속성을 추가 할 것입니다.

+0

'javax.activation'을 추가하면 무엇을 의미합니까? 어떻게 추가합니까? 죄송합니다 .. 저는이 물건에 익숙하지 않고 매우 혼란 스럽습니다. –

+0

@ lion-man, 내 대답에 추가되었습니다. –

+0

ok, 정말 고마워요. –