2014-02-08 5 views
21

HelloWorld를 .jar 파일에 넣고 실행하려고했지만 작동하지 않습니다. 나는 자바 파일을 만들고 프로그램에 타이핑 한 다음 cmd로 썼다 :.jar 오류 - 메인 클래스를 찾거나로드 할 수 없습니다.

그리고 그것은 효과가있다. 그럼 난

echo Main-Class: HelloWorld >manifest.txt 
jar cvfm HelloWorld.jar manifest.txt HelloWorld.class 

를 입력하고 난 다음

java -jar HelloWorld.jar 
HelloWorld.jar 

를 입력하고 두 번째 줄은 나에게 오류 준 상태에서 첫 번째 줄, 일

added manifest 
adding: HelloWorld.class(in = 426) (out= 288)(deflated 32%) 

출력을 가지고 :

Error: Could not find or load main class path\HelloWorld.jar 

동일한 ou입니다. tput 64 비트 jre7 \ bin, jdk1.7.0_51 \ bin, jdk1.7.0_51 \ jre \ bin의 java.exe 파일과 32 비트의 java.exe 파일로 열려고했을 때 (빠르게 닫는 창에서) jre7 \ bin. jre와 jdk를 모두 제거하고 다시 설치하고 .class 및 .jar 파일을 다시 만들었지 만 문제는 계속 발생합니다. 나는 win8에있다.

편집 : 나는 aetheria 제안대로하려고했지만 운이 없습니다. 나는 사용자 \의 blrp \ 경로 \ COM \ 유래에 HelloWorld.java를 넣어 그것을 컴파일, 그리고 경로에

java com.stackoverflow.user.blrp.HelloWorld 

를 입력했다. 나는 그때까지 매니페스트 및 항아리 생성 :

(echo Manifest-Version: 1.0 
echo Class-Path: . 
echo Main-Class: com.stackoverflow.user.blrp.HelloWorld) >manifest.txt 
jar cvfm HelloWorld.jar manifest.txt com\stackoverflow\user\blrp\HelloWorld.class 

를 출력

added manifest 
adding: com/stackoverflow/user/blrp/HelloWorld.class(in = 454) (out= 312)(deflat 
ed 31%) 

을 가지고 있지만, 여전히 례 HelloWorld.jar -jar 자바 근무 례 HelloWorld.jar는 (같은 오류)하지 않았다. 나도 패키지 물건을하지 않으려 고 노력했다. 단지 클래스 경로 만이 매니페스트와 같은 결과였다.

은 (또한, 나는 전에 박쥐 파일을 사용하여 질문에 문제를 해결하지만, 아직도 그 항아리 작업을 얻을 달콤한 될 것입니다.)

+0

manifest는 /META-INF/MANIFEST.MF로 패키징되어야합니다. 예를 들어 jre/lib/rt.jar을 확인하려면 모든 jar 파일을 압축 해제하십시오. – jbaliuka

+0

매니페스트의 끝까지 빈 줄을 인쇄하면 작동합니다. – jbaliuka

+0

echo는 빈 줄을 자동으로 만듭니다 (빈 줄이 없으면 java -jar도 작동하지 않음). jar 파일을 만들 때 매니페스트가 올바르게 패키지됩니다. – Blrp

답변

13

감사합니다. 제안을 위해 jbaliuka.나는

"C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*

"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

에서> jarfile가> 쉘> 열기> 명령, 다음 열기 (기본값) 및 변경 값을하고 HKEY_CLASSES_ROOT 것 (cmd를 regedit를 입력하여) 레지스트리 편집기를 열

(방금 javaw.exe에서 w를 제거했습니다.) 그 후에는 jar -> open with -> 기본 프로그램 선택 -> java 폴더로 이동하고 \ jre7 \ bin \ java를 열어야합니다. exe (또는 java 폴더에있는 다른 java.exe 파일). 작동하지 않으면 javaw.exe로 전환하고 jar 파일을 열고 다시 전환하십시오.

위험하다는 점을 제외하고는 레지스트리를 편집하는 것에 대해 알지 못하므로이 작업을 수행하기 전에 백업해야 할 수도 있습니다 (파일> 내보내기).

9

당신은 항상이를 실행할 수 있습니다

java -cp HelloWorld.jar HelloWorld 

-cp HelloWorld.jar jar를 클래스 경로에 추가하면 작성한 클래스가 HelloWorld 실행됩니다.

은, 아니 패키지와 주요 클래스 실행 가능한 단지를 만들 매니페스트에 Class-Path: .을 추가하려면 : 나는 당신의 클래스를 자신의 네임 스페이스를 제공하기 위해 package를 사용하여 권합니다

Manifest-Version: 1.0 
Class-Path: . 
Main-Class: HelloWorld 

. 예 :

package com.stackoverflow.user.blrp; 

public class HelloWorld { 
    ... 
} 
+0

나는 그것을 시도, 편집 OP를 참조하십시오. – Blrp

5

위 질문에 대한 답을 찾을 때이 질문을 발견했습니다. 그러나 제 경우에는 문제가 '돌진'보다는 '엉덩이 대시'의 사용이었습니다. 사용중인 대시를 확인하십시오. 잘못된 것일 수 있습니다. 이 답변으로 다른 사람의 검색 속도가 빨라 졌으면 좋겠어요. 이렇게 대답하면 나에게 약간의 시간을 절약 할 수있었습니다.

+0

편집기에 사용하는 단어는 무엇입니까? 아니면 특수 문자가있는 키보드가 있습니까? 나는 downvote하지 않았지만 대시를 사용하는 모든 프로그램에서 자라기 때문에 약간의 사람들이 겪게 될 문제처럼 보인다. – Noumenon

+2

더 명확해야했는데, 이것은 복사/붙여 넣기 문제의 명확한 결과였습니다. 원래 명령 줄에 대시 기호가 있고이를 내 버전으로 복사했습니다. .JAR을 2 명의 동료에게 전달할 때까지 붙어서, 명령 행 인수를 사용하여 실행 한 동료, 실패한 곳. 그런 다음 자신의 커맨드 라인 인수를 쓴 2 인자가 제대로 작동하는지 확인했습니다. 이것은 내가 ASCII 코드의 명령을 보았고, 차이점을 발견했다. 의견을 보내 주셔서 감사합니다. – EuroTech

+0

필자는 필사적으로 책상을보고 머리를 부딪 히고 난 후에이 대답을 발견했습니다. 내 문제는 명령 줄을 잘라내어 Outlook에서 붙여 넣었다는 것입니다. 지켜 볼 한가지 더 ... 감사합니다. @EuroTech – Ukko

0

나는 jar 파일을 사용하여 설치를 설치하는 동안 동일한 문제에 직면했다. 나를 위해 일한 thta 솔루션 관리자로

  1. 명령 프롬프트를 엽니입니다 이동이 bin 디렉토리를 JDK하는
  2. (Ex.C : \ 프로그램 파일 \ 자바 \ jdk1.8.0_73 \ bin에)
  3. 지금 java -jar <<jar fully qualified path>>
  4. 을 실행

그것은 나 : 근무

+2

그건 문제가되지 않았습니다. 내가 OP에서 말했듯이,'java -jar HelloWorld.jar'는 제가 질문하기 전에도 작동했습니다. 또한,'bin'이'PATH' 환경 변수의 일부라면, 당신은 그것으로 갈 필요가 없습니다. – Blrp

1

내가 다른 스레드에보고했다, 그래서이 문제는 내가 1.8 내 응용 프로그램을 만드는 것을 발견하지만 어떤 이유로 내 JRE가 밖으로이었다 해답을 찾을 수 있었다 디 나는 그것을 업데이트하는 기억에도 불구하고 ated. lastes jre 8을 다운로드했고 jar 파일이 완벽하게 실행됩니다. 희망이 도움이됩니다.

관련 문제