Development Tip

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

yourdevel 2020. 10. 28. 21:09
반응형

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 파일을 지정합니다.


JD-GUI 는 JAR 검색 및 디 컴파일을위한 매우 편리한 도구입니다.


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

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

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


.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 파일입니다. "


aopalliance.jar파일에 .java파일 대신 파일이 있는지 확인 .class하십시오. 그렇다면 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.To display table of content

    jar -tvf NameOfJarFile.jar

As per my understanding Jar file is same as Zip but has executable files.

If you do not have executable files in Jar then it would be same as Zip file, I mean to say why go to Jar.

Since Jar file has executable files, they can be easily loaded on to your code and easily transferred to others to use it.


While learning about JAR, I came across this thread, but couldn't get enough information for people like me, who have .NET background, so I'm gonna add few points which can help persons like myself with .NET background.

First we need to define similar concept to JAR in .NET which is Assembly and assembly shares a lot in common with Java JAR files.

So, an assembly is the fundamental unit of code packaging in the .NET environment. Assemblies are self contained and typically contain the intermediate code from compiling classes, metadata about the classes, and any other files needed by the packaged code to perform its task. Since assemblies are the fundamental unit of code packaging, several actions related to interacting with types must be done at the assembly level. For instance, granting of security permissions, code deployment, and versioning are done at the assembly level.

Java JAR files perform a similar task in Java with most differences being in the implementation. Assemblies are usually stored as EXEs or DLLs while JAR files are stored in the ZIP file format.

Source of Information -> 5- Assemblies

참고URL : https://stackoverflow.com/questions/12079230/what-exactly-does-a-jar-file-contain

반응형