2017-03-04 1 views
0

여기에 내가 만나는 오류가 있습니다 : "메인 클래스 MCP을 찾거나로드 할 수 없습니다".주 클래스 (좋은 classpath, 좋은 명단, 좋은 클래스)를 찾거나로드 할 수 없습니다

내 프로젝트는 다음과 같이 구성되어있다 : 나는 javac src/tp2/*.java -d class 내 프로젝트를 짓고 있어요

- src (directory containing the sub-directory (and package) "tp2" containing the source files (their package is "tp2")). 
- class (directory containing the directory (and package) "tp2" containing the class files) 
- META-INF (directory containing "MANIFEST.MF" (only one line : "Main-Class: tp2.MCP")). 
  1. .
  2. 나는 내가 내 CLASSPATH./class을 추가 한 당신을 말하고 싶어 jar cfmv MCP.jar META-INF/MANIFEST.MF class/tp2/
  3. 내 "의 .jar"을 만들 수 있습니다.

그러나, 오류가 여전히 존재 ... 그리고 내가 jar -tf MCP.jar을 수행 할 때, 내가 가진 :

META-INF/ 
META-INF/MANIFEST.MF 
class/tp2/XXYYZZ.class 
class/tp2/MCP.class 

클래스 패스가 제대로 실행에 읽을 수없는 것 같다?

답변

0

귀하의 jar 파일에 class 디렉토리가 포함되어 있습니다. 따라서 패키지 이름의 일부로 취급됩니다. 계속되는 inputfiles 인수를 처리하는 동안

-C 디렉토리 임시 디렉토리로 디렉토리를 변경합니다

사용 -C 플래그 당신의 항아리 man jar에서

java cfmv MCP.jar META-INF/MANIFEST.MF -C class . 

만들 때. 여러 개의 -C 디렉토리 입력 파일이 허용됩니다.

+0

"class.tp2"라고 쓰면 어떻게 될까요? 매니 페스트에서? –

+0

'javac' 명령을 통해 패키지 이름이'class.tp2'가 아니라'tp2'라는 것이 확실해 보입니다. – Jeremy

+0

네,하지만 파일의 첫 줄에 class.tp2라고 쓰면 class.tp2; " 그리고 나는 "class.tp2"도 매니페스트에 쓴다. 그것이 -C를 사용하는 것을 피하겠습니까? –

관련 문제