[java] jar 파일에는 정확히 무엇이 포함됩니까?

인턴으로서 저는 프로젝트에서 회사 코드를 사용하며 일반적 jar으로 작업 할 파일을 보냅니다 . 나는 그것을 빌드 path에 추가 Eclipse하고 일반적으로 모두 멋지고 멋져요.

그러나 각 클래스에 포함 된 내용과 jar파일 에있는 클래스 중 하나를 열려고 하면 소스 파일이 필요하다는 메시지가 표시됩니다.

이것은 무엇을 의미 하는가? 나는 C / C ++ 배경에서 왔기 때문에 jar이미 컴파일 된 .o파일과 비슷하고 내가 볼 수있는 것은 .h물건 뿐 입니까? 아니면 jar내가 사용 중인 파일에 암호화되어 읽을 수없는 실제 코드가 있습니까?

모든 답변에 감사드립니다!

편집 :
고마워요, 얘들 아, 나는 그것이 일종의 아카이브와 같은 것이라는 것을 알고 있었지만 .class파일 을 열려고 할 때 왜 많은 무작위 문자를 얻었 는지 혼란 스러웠습니다 . 출력은 .oC 에서 파일 을 열려고 할 때 비슷 했기 때문에 확인하고 싶었습니다.
감사!



답변

JAR 파일은 실제로 단지 ZIP 파일입니다. 일반적으로 컴파일 된 Java 코드 (* .class)를 포함하지만 때로는 Java 소스 코드 (* .java)도 포함합니다.

그러나 Java는 디 컴파일 될 수 있습니다. 개발자가 코드를 난독 화 한 경우 유용한 클래스 / 함수 / 변수 이름을 얻을 수 없습니다.


답변

그러나 각 클래스에 포함 된 내용이 궁금했고 jar 파일의 클래스 중 하나를 열려고하면 소스 파일이 필요하다는 메시지가 표시됩니다.

jar 파일은 기본적으로 .class 파일과 잠재적으로 다른 리소스 (및 jar 자체에 대한 메타 데이터)를 포함하는 zip 파일입니다. Java 바이트 코드는 대부분의 바이너리 형식보다 훨씬 많은 메타 데이터를 유지하므로 C와 Java를 실제로 비교하기는 어렵습니다.하지만 클래스 파일 소스 코드 대신 컴파일 된 코드입니다.

zip 유틸리티를 사용하여 jar 파일을 열거 나 실행 jar xf foo.jar하면 파일을 추출하여 살펴볼 수 있습니다. Java 코드를 실행하기 위해 jar 파일이 필요 하지 않습니다. 클래스 로더는 파일 시스템이나 URL, jar 파일에서 직접 클래스 데이터를로드 할 수 있습니다.


답변

jar 파일에 포함 된 내용을 이해하는 가장 좋은 방법은 다음을 실행하는 것입니다.

명령 줄로 이동하여 실행 jar tvf jarfilename.jar


답변

jar파일에 메타 데이터가 포함 된 몇 가지 추가 파일이 zip 파일입니다. (.jar 확장자에도 불구하고 zip 형식이며 .zip 파일을 처리하는 모든 유틸리티도 .jar 파일을 처리 할 수 ​​있습니다.)

http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html

Jar 파일은 모든 종류의 파일을 포함 할 수 있지만 일반적으로 애플리케이션에 필요한 클래스 파일 및 지원 구성 파일 (속성), 그래픽 및 기타 데이터 파일을 포함합니다.

클래스 파일에는 Java Virtual Machine에서 실행 가능한 컴파일 된 Java 코드가 포함되어 있습니다.

http://en.wikipedia.org/wiki/Java_class_file


답변

JAR은 Java ARchive를 의미합니다. 널리 사용되는 ZIP 파일 형식을 기반으로하는 파일 형식이며 여러 파일을 하나로 집계하는 데 사용됩니다. JAR을 일반 보관 도구로 사용할 수 있지만 개발의 주된 동기는 Java 애플릿과 필수 구성 요소 (.class 파일, 이미지 및 사운드)를 열지 않고 단일 HTTP 트랜잭션으로 브라우저에 다운로드 할 수 있도록하는 것이 었습니다. 각 조각에 대한 새로운 연결. 이것은 애플릿이 웹 페이지에로드되고 작동을 시작할 수있는 속도를 크게 향상시킵니다. JAR 형식은 또한 압축을 지원하여 파일 크기를 줄이고 다운로드 시간을 더욱 향상시킵니다. 또한 JAR 파일의 개별 항목은 원본을 인증하기 위해 애플릿 작성자가 디지털 서명 할 수 있습니다.


답변

Jar 파일에는 일부 오픈 소스 디 컴파일러를 사용하여 디 컴파일 *.class하여 읽을 수있는 .java클래스 로 변환 할 수있는 형태의 컴파일 된 Java 바이너리 클래스가 포함되어 있습니다 . jar META-INF/MANIFEST.MF에는 jar 파일을 사용하는 방법을 알려주 는 선택 사항도 있습니다 . jar와 함께로드 할 다른 jar 파일을 지정합니다.


답변

Jar (Java Archive)는 .class 파일 그룹을 포함합니다.

1. Jar 파일 (Zip 파일)을 생성하려면

 if one .class (say, Demo.class) then use command jar -cvf NameOfJarFile.jar Demo.class (usually it’s not feasible for only one .class file)

 if more than one .class (say, Demo.class , DemoOne.class) then use command jar -cvf NameOfJarFile.jar Demo.class DemoOne.class

 if all .class is to be group (say, Demo.class , DemoOne.class etc) then use command jar -cvf NameOfJarFile.jar *.class

2. Jar 파일을 추출하려면 (Unzip File)

    jar -xvf NameOfJarFile.jar

3. 목차를 표시하려면

    jar -tvf NameOfJarFile.jar