programing

항아리 내의 파일 수정

randomtip 2022. 9. 14. 21:57
반응형

항아리 내의 파일 수정

제 항아리 안에 있는 파일을 수정하고 싶습니다.어플리케이션 내에서 압축 해제 및 재충전을 하지 않고 이 작업을 수행할 수 있습니까?

수정하려는 파일은 대부분 xml 기반 구성 파일입니다.

제가 jarring을 해제하지 않는 이유는 응용 프로그램이 launch4j로 래핑되어 있기 때문입니다.jar를 해제하면 .exe 파일을 다시 만들 수 없습니다.

.u을 지정합니다.jar

Java 튜토리얼에서:

jar uf jar-file input-file(s)

"추가되는 파일과 동일한 경로 이름을 가진 아카이브에 이미 있는 파일은 덮어씁니다."

JAR 파일 업데이트를 참조하십시오.

모든 병을 다시 만드는 것보다 훨씬 낫지.프로그램 내에서 호출하는 것도 가능할 것 같습니다.Java에서 명령줄 실행 시도

VIM을 사용할 수 있습니다.

vim my.jar

된 텍스트 파일을 할 수 .unzip고객의 환경에 대응합니다.

Java jar 파일은 zip 파일과 같은 형식이기 때문에 아카이브를 수정할 수 있는 zip 파일 유틸리티가 있다면 문제 없습니다.두 번째 문제는 클래스나 다른 것을 재컴파일하려면 jar를 다시 빌드해야 하지만 텍스트 파일이나 다른 것(xml 등)은 충분히 쉽게 수정해야 한다는 것입니다.

많은 사람들이 말했듯이 JAR의 파일을 변경하려면 JAR의 재캐닝이 필요합니다.Launch4J에서는 JAR을 변경하면 EXE를 재구축해야 합니다.그러니 이 길로 가지 마세요.

일반적으로 JAR에 컨피규레이션파일을 넣는 것은 좋지 않습니다.제 제안은 이렇습니다.미리 정해진 장소(홈 디렉토리, \Program Files\ 등)에서 컨피규레이션파일을 검색합니다.컨피규레이션파일이 발견되면 그것을 사용합니다.그렇지 않으면 JAR 내의 것을 폴백으로 사용합니다.이 경우 미리 정해진 위치에 구성 파일을 작성하기만 하면 프로그램이 해당 파일을 선택합니다.

이 접근법의 또 다른 장점은 소프트웨어를 업그레이드해도 수정된 구성 파일이 덮어쓰이지 않는다는 것입니다.

이 도움말에 대한 자세한 내용은 알 수 없지만 압축을 풀지 않고 편집할 수 있습니다.

  1. vi 에디터에서 jar 파일을 엽니다.
  2. 목록에서 편집할 파일을 선택합니다.
  3. Enter 키를 눌러 파일을 열고 체인저를 수행하여 저장합니다.

상세한 것에 대하여는, 블로그의 투고를 참조해 주세요.http://vinurip.blogspot.com/2015/04/how-to-edit-contents-of-jar-file-on-mac.html

jar 파일 내의 xml 파일을 수정/업데이트해야 하는 유사한 문제가 있습니다.

jar 파일은 Spring-boot 응용 프로그램에 의해 생성되며 파일 위치는 BOOT-INF/classes/properties입니다.

문서를 참조하여 다음 명령으로 파일을 교체/업데이트하려고 했습니다.

jar uf myapp.jar BOOT-INF/classes/properties/test.xml

단, 이 경우 지정된 위치에 있는 파일은 변경되지 않습니다.나도 모든 옵션을 시도해봤지만 소용없었다.

주의: jar 파일이 있는 위치에서 실행하는 명령어.

찾은 솔루션은 다음과 같습니다.

  1. jar 파일의 현재 위치에서 BOOT-INF/classes/properties 폴더를 만들었습니다.
  2. test.xml 파일을 BOOT-INF/classes/properties 위치에 복사합니다.
  3. 동일한 명령을 다시 실행합니다.jar uf myapp.jar BOOT-INF/classes/properties/test.xml

jar 파일에서 xml 파일이 변경되었습니다.

기본적으로 jar 파일에 파일이 있는 폴더 구조를 만들어야 합니다.해당 위치에 파일을 복사한 후 명령을 실행합니다.

이 문서의 문제는 일반적인 시나리오에 대한 설명뿐만 아니라 충분한 예가 없다는 것입니다.

이것은 단기적으로는 당신이 다루고자 하는 것보다 더 많은 작업이 될 수 있지만, 장기적으로는 항아리를 수동으로 만드는 대신 개미(또는 메이븐, 심지어 바젤)를 사용하는 것을 검토하는 것이 당신에게 매우 유익할 것이라고 생각합니다.그러면 개미 파일을 클릭하여(Eclipse를 사용하는 경우) 항아리를 재구성할 수 있습니다.

또는 실제로 이러한 설정 파일을 jar에 전혀 포함하지 않는 것이 좋습니다.이러한 파일을 정기적으로 교환할 필요가 있는 경우, 또는 복수의 당사자에게 배포할 필요가 있는 경우, 설정 파일은 jar의 일부가 되지 않는 것이 좋습니다.

dfa에 대해 자세히 설명하자면 jar 파일이 zip 파일처럼 설정되어 있기 때문입니다.파일을 수정하려면 모든 엔트리를 읽고 변경할 엔트리를 수정한 후 jar 파일에 다시 써야 합니다.전에도 이 일을 해야만 했고, 그렇게 할 수 있는 유일한 방법이었다.

편집

파일 스트림인 Java jar 파일 편집기에 내부가 사용됩니다.분명히 방법이 있을 거예요. 당신은 항아리 전체를 메모리로 읽고, 모든 것을 수정한 다음, 파일 스트림에 다시 쓸 수 있어요.ZIP 헤더의 ToC는 쓰기 시에 정의해야 하기 때문에 7-Zip 등의 유틸리티가 하고 있다고 생각합니다.하지만 내가 틀릴 수도 있어.

예, SQLite를 사용하여 jar 파일 내에서 데이터베이스를 읽거나 쓸 수 있으므로 압축을 풀고 다시 짤 필요가 없습니다. 제 게시물 http://shoaibinamdar.in/blog/?p=313을 따르십시오.

"jdbc:sqlite:resource:" 구문을 사용하면 jar 파일 내에서 데이터베이스를 읽고 쓸 수 있습니다.

TrueZip을 확인해 주세요.

가상 파일 시스템 API를 통해 원하는 대로(jar 파일 내의 인라인 파일 편집) 할 수 있습니다.또한 중첩된 아카이브(항아리 내 항아리)도 지원합니다.

winrar를 사용하여 ex.용 jar 파일을 추출하고 CAVAJ를 사용합니다.

Cavaj Java Decompiler는 CLASS 파일에서 Java 소스 코드를 재구성하는 그래픽 프리웨어 유틸리티입니다.

필요한 경우 비디오 튜토리얼을 소개합니다.https://www.youtube.com/watch?v=ByLUeem7680

Windows에서 이 작업을 수행하는 가장 간단한 방법은 WinRAR을 사용하는 것입니다.

  1. 파일을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 "WinRAR로 열기"를 선택합니다.
  2. 편집할 파일로 이동하고 해당 파일을 두 번 클릭하여 기본 편집기에서 엽니다.
  3. 변경한 후 편집기를 저장하고 종료합니다.
  4. 보관 파일의 업데이트 여부를 묻는 대화상자가 나타납니다. "예"를 선택하면 JAR이 업데이트됩니다.

위의 대부분의 답변은 수업 파일에 대해 할 수 없다고 합니다.

클래스 파일을 갱신하고 싶은 경우에도 갱신할 수 있습니다.작업 공간에서 클래스 파일을 드래그 앤 드롭하기만 하면 됩니다.

클래스 파일의 변경을 확인하고 싶은 경우는, jd-gui 와 같은 디컴파일러를 사용해 확인할 수 있습니다.

이 파일이 .class(리소스 파일 또는 매니페스트 파일)가 아니면 가능합니다.

언급URL : https://stackoverflow.com/questions/1224817/modifying-a-file-inside-a-jar

반응형