source

"java - cp"와 "java - jar"의 차이점은 무엇입니까?

bestscript 2022. 12. 3. 12:45

"java - cp"와 "java - jar"의 차이점은 무엇입니까?

에서 Java 애플리케이션을 실행하는 것과
java -cp CLASSPATH그리고.java -jar JAR_FILE_PATH자바 어플리케이션 실행에는 한쪽이 다른 쪽보다 더 좋습니까?즉, 다음 중 JVM의 머신 리소스 사용량에 따라 비용이 더 많이 드는 방법은 무엇입니까?

애플리케이션을 실행하는 동안 JVM이 더 많은 스레드를 생성하도록 하는 것은 무엇입니까?

첫 번째 버전은 트랩이 적다는 이유('클래스패스 지옥')로 Java 어플리케이션을 시작하는 것이 좋습니다.두 번째는 실행 가능한 jar 파일이 필요하며 해당 응용 프로그램의 클래스 경로는 jar 매니페스트 내에서 정의되어야 합니다(다른 모든 클래스 경로 선언은 자동으로 무시됩니다...).두 번째 버전에서는 항아리를 살펴보고 매니페스트를 읽고 항아리가 저장되어 있는 곳에서 클래스 패스 엔트리가 유효한지 알아내야 합니다.그건 피할 수 있어요.

어느 버전에서도 성능의 장점과 단점은 기대하지 않습니다.메인 스레드에 사용할 클래스와 라이브러리를 찾을 수 있는 위치를 jvm에 지시합니다.

를 사용하여-cp인수는 컴파일 또는 실행 시 필요한 추가 클래스 또는 라이브러리의 경로와 같은 클래스 경로를 제공합니다.와 함께-jar실행할 실행 가능한 JAR 파일을 지정합니다.

둘 다 지정할 수 없습니다.도망가려고 하면java -cp folder/myexternallibrary.jar -jar myprogram.jar그러면 효과가 없을 거야해당 JAR의 클래스 패스는 매니페스트에서 지정해야 합니다.-cp논쟁.

자세한 내용은 이쪽과 이쪽에서 확인하실 수 있습니다.

PS:-cp그리고.-classpath동의어입니다.

사용시java -cp정규화된 메인 클래스 이름을 제공해야 합니다.

java -cp com.mycompany.MyMain

사용시java -jar myjar.jarjar 파일은 폴더의 jar 파일에 포함된 manifest.mf를 통해 메인 클래스에 대한 정보를 제공해야 합니다.META-INF:

Main-Class: com.mycompany.MyMain

클래스 경로의 모든 코드를 지정하려면 java -cp CLASSPATH가 필요합니다.이것은 코드 디버깅에 도움이 됩니다.

jarred 실행 파일 형식:java -jar JarFile단 한 번의 짧은 명령으로 앱을 시작하려는 경우 사용할 수 있습니다.클래스 경로 항목에서 공백으로 구분된 jar를 사용하여 MANIFEST에 종속 jar 파일을 추가로 지정할 수 있습니다. 예:

Class-Path: mysql.jar infobus.jar acme/beans.jar

성능 면에서는 둘 다 비교가 안 됩니다.

이미 말했듯이 -cp는 명령줄에서 jvm에 메인 스레드에 사용할 클래스와 라이브러리를 찾을 수 있는 위치(클래스 경로 정의)를 지시하기 위한 것입니다.-jar에서는 클래스 경로와 메인 클래스가 jar 파일 매니페스트에 정의될 것으로 예상합니다.그래서 다른 것은 명령행에서 사물을 정의하는 것이고 다른 것은 항아리 매니페스트 안에서 사물을 찾는 것입니다.성능에는 차이가 없습니다.동시에 사용할 수 없습니다. -jar는 -cp를 덮어씁니다.

cp를 사용해도 매니페스트 파일은 체크됩니다.따라서 매니페스트에 있는 클래스 경로와 명령줄에 있는 클래스 경로 중 일부를 정의할 수 있습니다.이 기능은 특히 서드파티제의 jar에 의존하고 있는 경우에 편리합니다.이 jar는 빌드와 함께 제공되지 않거나 제공하고 싶지 않습니다(예를 들어 설치될 시스템에 이미 설치되어 있을 것으로 예상).그래서 외부 항아리를 제공할 수 있습니다.시스템마다 위치가 다르거나 다른 시스템에 다른 버전이 있을 수 있습니다(단, 인터페이스가 동일).이렇게 하면 앱을 다른 버전으로 빌드하고 다른 시스템에서 실행할 때 실제 타사 종속성을 명령줄의 클래스 경로에 추가할 수 있습니다.

성능 면에서는 차이가 없습니다.java - cp를 사용하여 Java 클래스 파일을 실행하기 위한 클래스 경로에서 필요한 클래스와 jar를 지정할 수 있습니다.

실행 가능한 jar 파일인 경우.java -jar 명령을 사용하면 jvm은 /META-INF/MANIFest에서 실행해야 하는 클래스를 찾습니다.jar 파일 내의 MF 파일.

언급URL : https://stackoverflow.com/questions/11922681/differences-between-java-cp-and-java-jar