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


87

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

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

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

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

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




5
@Blue Moon : 재미있는 점은 Google이 나를 여기로 안내한다는 것입니다. : p
user1036719 2014-02-25

@ user1036719 여기에서 답을 찾은 것은 좋지만이 앞에 오는 링크가 하나 더 있습니다. 그리고 이것은 우리가 그렇게 장려 할 필요가있는 프로그래밍 질문이 아닙니다. 그래도 반대표를 던지거나 닫지 않았습니다.
PP

답변:


88

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

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


53

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

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

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


감사합니다. 압축을 풀 수 있었기 때문에 일종의 아카이브라는 것을 알았지 만 .class 파일에 읽을 수있는 텍스트가 포함되어 있지 않은 이유가 혼란 스러웠습니다. 설명 해주셔서 감사합니다. .class는 .o 파일과 비슷합니다.
joshualan 2012-08-22

19

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

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


13

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


1
더하기 1은 표준에 연결되어 있기 때문에
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

10

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


5

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


3

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

2

.jar 파일은 .exe 파일과 유사합니다. 본질적으로 둘 다 실행 가능한 zip 파일 (다른 zip 알고리즘)입니다.

jar 파일에서 폴더와 클래스 파일을 볼 수 있습니다. 각 클래스 파일은 .o 파일과 유사하며 컴파일 된 Java 아카이브입니다.

jar 파일의 코드를 보려면 자바 디 컴파일러 (여기에 위치 : http://java.decompiler.free.fr/?q=jdgui )와 .jar 추출기 (7zip이 잘 작동 함)를 다운로드하십시오.



1

.jar 파일에는 컴파일 된 코드 (* .class 파일) 및 해당 코드와 관련된 기타 데이터 / 자원이 포함됩니다. 여러 파일을 단일 아카이브 파일로 묶을 수 있습니다. 또한 메타 데이터도 포함합니다. zip 파일이므로 입력 한 데이터를 압축 할 수 있습니다.

내가 유용하다고 생각한 몇 가지.

http://www.skylit.com/javamethods/faqs/createjar.html

http://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html

실제로 OSGi 책은 JAR 파일을 "JAR은 ZIP 파일 형식을 기반으로하는 아카이브 파일이므로 많은 파일을 단일 파일로 집계 할 수 있습니다. 일반적으로 아카이브에 포함 된 파일은 컴파일 된 Java 클래스 파일과 리소스의 혼합입니다. 또한 사양은 메타 데이터 (META-INF 폴더)에 대한 JAR 아카이브 내의 표준 위치와 그 안에 직접 여러 표준 파일 이름 및 형식을 정의합니다. 가장 중요한 것은 MANIFEST.MF 파일입니다. "


1

aopalliance.jar파일에 .java파일 대신 파일이 있는지 확인 .class하십시오. 그렇다면 jar 파일을 추출하고 이클립스로 가져와 일식을 통해 jar 파일을 만드십시오. 그것은 나를 위해 일했습니다.


1

JAR에 대해 배우면서이 스레드를 발견했지만 .NET 배경 지식을 가진 저와 같은 사람들에게 충분한 정보를 얻을 수 없었기 때문에 .NET 배경 지식을 가진 저와 같은 사람들에게 도움이 될 수있는 몇 가지 사항을 추가 할 것입니다.

먼저 Assembly 인 .NET의 JAR과 유사한 개념을 정의해야합니다. 및 가 Java JAR 파일과 공통점을 많이 공유합니다.

따라서 어셈블리는 .NET 환경에서 코드 패키징의 기본 단위입니다. 어셈블리는 자체 포함되며 일반적으로 컴파일 링 클래스의 중간 코드, 클래스에 대한 메타 데이터 및 작업을 수행하는 데 필요한 패키지 코드에 필요한 기타 파일을 포함합니다. 어셈블리는 코드 패키징의 기본 단위이므로 형식과 상호 작용하는 것과 관련된 몇 가지 작업은 어셈블리 수준에서 수행해야합니다. 예를 들어 보안 권한 부여, 코드 배포 및 버전 관리는 어셈블리 수준에서 수행됩니다.

Java JAR 파일은 Java에서 유사한 작업을 수행하지만 대부분의 차이점은 구현에 있습니다. 어셈블리는 일반적으로 EXE 또는 DLL 로 저장되는 반면 JAR 파일은 ZIP 파일 형식으로 저장 됩니다.

정보 출처-> 5- 어셈블리

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.