2011-10-05 8 views
0

이것은 네트워크 응용 프로그램을 실행하려는 시도와 관련이 있습니다. 코드가 올바르게 컴파일되지만 "java SendMail"을 실행하려고하면 java가 반환됩니다.Java 코드가 컴파일되지만 실행되지 않습니다. "주 클래스를 찾을 수 없습니다."

C:\Butte>java SendMail 
Exception in thread "main" java.lang.NoClassDefFoundError: SendMail (wrong name: 
je3/net/SendMail) 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClassCond(Unknown Source) 
     at java.lang.ClassLoader.defineClass(Unknown Source) 
     at java.security.SecureClassLoader.defineClass(Unknown Source) 
     at java.net.URLClassLoader.defineClass(Unknown Source) 
     at java.net.URLClassLoader.access$000(Unknown Source) 
     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) 
Could not find the main class: SendMail. Program will exit. 

이 작업은 간단한 구성 문제입니다. 나는 최근에 다른 네트워킹 코드를 지원할 수있는 자바 패키지를 가지고있다. ,

package je3.net; 
import java.io.*; 
import java.net.*; 

/** 
* this software sends e-mail via a mailto : url 
*/ 

public class SendMail { 
    public static void main(String[] args) { 
     // --- SNIP ---- 
    } 
} 

가 대단히 감사합니다

조엘

답변

3

귀하의 클래스가 패키지 je3.net에, 그래서 당신은 그것을 실행해야합니다 : 소스 코드는 그러나

java je3.net.SendMail 

, 그것은 아마 다르게 그것을 컴파일해야 할 필요가있는 것처럼 들린다 - 그것은 파일 이름으로 je3\net\SendMail.class을 찾을 것이다. 기본적으로 소스와 출력은 선언 한 패키지 구조와 일치해야합니다.

당신은 소스에 그것을 할이없는 않습니다 - 당신은 바로 쓸 수있는 다음 -d . 부분은 당신을 위해 올바른 디렉토리 구조를 만들 javac를 만들 것입니다

javac -d . SendMail.java 
java je3.net.SendMail 

한다. 그러나 나는 SendMail.javaje3\net 디렉토리로 개인적으로 옮길 것입니다.

+0

이제 실행됩니다. 정말 고마워요! –

관련 문제