2012-06-26 5 views
-1

기본 클래스가 다른 클래스와 종속되어있는 Java 응용 프로그램이 있습니다. IDE를 사용하여 응용 프로그램을 실행할 수 있습니다. 내가 java mainClass를 사용하여 메인 클래스의 클래스 파일에 위치하여 명령 줄에서 응용 프로그램을 실행하려고 할 때, 그것은 나에게 다음과 같은 오류를 제공 [주요 클래스 이름은 mainClass입니다] :IDE를 사용하지 않고 java 응용 프로그램을 실행하는 방법은 무엇입니까?

Exception in thread "main" java.lang.NoClassDefFoundError: mainClass(wrong name: mainfolder/mainClass) 

    at java.lang.ClassLoader.defineClass1(Native Method) 
    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$100(Unknown Source) 
    at java.net.URLClassLoader$1.run(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) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 

아무도 나에게 제안 할 수있는 방법 할 수 IDE를 사용하지 않고 응용 프로그램을 실행합니까?

답변

1

전체 이름을 지정해야합니다. 예를 들어 MainClass이 com.example 패키지 아래에있는 경우 java com.example.MainClass

here을 확인할 수 있습니다. 문서에서

: 당신이 IDE를 사용하여 응용 프로그램을 실행하는 경우

By default, the first non-option argument is the name of the class to be invoked. A fully-qualified class name should be used. If the -jar option is specified, the first non-option argume nt is the name of a JAR archive containing class and resource f iles for the application, with the startup class indicated by the Main-Class manifest header. The Java runtime searches for the startup class, and other classes used, in three sets of locations: the bootstrap class path, the installed extensions, and the user class path.

+0

감사합니다! 패키지 폴더 외부에서 package.classname으로 java 명령을 실행 한 후 출력을 받았습니다! – flyleaf

0

mainfolder/Mainclass 대신 mainfolder.mainclass을 시도하십시오. 또한 주 폴더는 패키지입니다.

-cp을 사용하여 필요한 모든 병을 클래스 경로에 넣었는지 확인하십시오.

+0

시도했지만이 : - "오류 : 메인 클래스 mainfolder.mainClass를 찾지 못했습니다." – flyleaf

+0

안녕하세요! 패키지 폴더 외부에서 package.classname으로 java 명령을 실행 한 후 출력을 받았습니다! – flyleaf

0

으로 또는 IDE를하지 않고, 자바 응용 프로그램은 항상 당신이 사용하는 IDE는 당신을위한 클래스 경로를 준비,

java -cp classpath EntryClass 

으로 시작할 수 있습니다. IDE없이 실행하는 경우에는 전체 클래스 경로를 직접 준비해야합니다.

EntryClass는 클래스 경로에서도 찾을 수 있습니다.

자세한 내용은 java - the Java application launcher을 참조하십시오.

+0

답변 해 주셔서 감사합니다 – flyleaf

0

하자 당신은/홈/면지에서 자바 프로그램을 runngin 있다고 말한다/응용 프로그램/

이 필요한 명령 다음과 같습니다

javac -classpath /home/flyleaf/app/jar1.jar:/home/flyleaf/app/jar1.jar:/home/flyleaf/app/ com/app/your/mail/class/Main.java 

당신은 jar 파일을 클래스 패스에 추가 할 필요가 필요성과 프로그램이있는 경로

+0

답변 해 주셔서 감사합니다. – flyleaf

0

Ok! main class's class file을 통해 java 명령을 실행 한 후 출력을 얻고 package.classname을 클래스 파일이 들어있는 폴더 외부에서 가져 왔습니다!

게다가 jar 파일은 jar 파일을 찾은 다음이 명령을 실행 한 후에 작동합니다. java -jar jarname.jar!

감사합니다.

관련 문제