2011-02-02 5 views
4

Eclipse의 "내보내기 -> Java -> Runnable Jar File"기능을 사용하여 매우 간단한 실행 파일 jar 파일을 생성했습니다. 나의하여 HelloWorld 클래스는 다음과 같습니다Eclipse에서 생성 된 실행 가능한 jar 파일이 실행되지 않습니까?

import javax.swing.JFrame; 
public class HWorld extends JFrame { 
    public static void main(String[] args) { 
    new HWorld(); 
    } 
    public HWorld() { 
    this.setSize(200, 100); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setTitle("Hello World!"); 
    this.setVisible(true); 
    } 
} 

을 이제 .jar 파일을 생성 한 후,이 명령 "자바 -jar HWorld.jar"

하지만, 내가하려고 사용하여 명령 줄에서 잘 실행

Manifest-Version: 1.0 
Rsrc-Class-Path: ./ 
Class-Path: . 
Rsrc-Main-Class: HWorld 
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 
:

E:\Eclipse\workspace>HWorld.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Eclipse\workspace\HWorld/jar 
Caused by: java.lang.ClassNotFoundException: E:\Eclipse\workspace\HWorld.jar 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
Could not find the main class: E:\Eclipse\workspace\HWorld.jar. Program will exit. 

내 매니페스트는 다음과 같습니다 : 나는 다음과 같은 오류가 왜 모르겠어요 (가정으로 작동해야하는) 자신의 병을 실행합니다

나에게 정말 비린내가 보이는 유일한은이 (A의 .jar이의 .class 아니므로) :

Could not find the main class: E:\Eclipse\workspace\HWorld.jar 

는 아이디어 나 생각 또는 대답을 찾고! 품질에 대한 희망으로 가능한 한 많은 정보를 제공하려고 노력했습니다. 이 스레드는 작동해야하지만 내 질문에 대답하지 않는다는 것을 의미합니다 : http://forums.oracle.com/forums/thread.jspa?threadID=2152988. 다른 누구도 Eclipse에서 사용해 볼 수 있습니까?

+0

을이 문제를 해결할 수 있었다으로 클래스를 선언 한 후 나는 지금의 .jar 조치를 할 이클립스로 Maven을 사용하는 대신 Maven을 사용한다. – djangofan

답변

8

Jars는 결코 이런 의미에서 '실행 가능'하지 않습니다. 이것이 항아리에 좋은 것은 :

java -jar YOURJAR.jar 

갱신 제공 한 역 추적이 기괴한입니다. Windows는 일부 Java 버전으로 항아리를 시작하지만 클래스 이름 대신 경로 이름을 전달하기로 결정한 것으로 보입니다. 나는 그 이야기가 무엇인지 모르겠다.

+0

jar에는 org.eclipse.jdt.internal.jarinjarloader 클래스가 포함되어 있으므로이 방법으로 IT를 시작하거나 그렇게해야합니다. (위의 매니 페스트 파일 항목을 읽으십시오) – djangofan

+0

답변에 대해 너무 확신하지 못하고 동시에 믿습니다. 이제 "java"를 사용하지 않고 .jar 파일을 실행할 때 어떻게 인터프리터가 실행중인 것일까 요? 그것은 어느 정도 작동해야만하는 것처럼 보입니다. – djangofan

+0

@ dja sure 'nuf. 내 편집을 참조하십시오. – bmargulies

2

내 컴퓨터에서 이전 Java 버전을 모두 제거하면 문제가 해결되었습니다.

내 마지막에는 명령 줄을 사용하여 .jar 파일을 실행할 수 있었지만 기본 두 번 클릭 옵션은 사용할 수 없었습니다. 나중에 후자가 다시 작동했다.

0

필자의 경우 실수로 public static void main()을 포함하는 클래스를 public 클래스로 선언하지 않았다. 내가 처음이 질문을 게시하기 때문에 대중이 ... 이클립스를 통해 실행 가능한 단지로 향후 수출이 도움이

희망 ...

관련 문제