내 항아리 안의 파일을 수정하고 싶습니다. 내 응용 프로그램에서 추출 및 재 조립없이이 작업을 수행 할 수 있습니까?
수정하려는 파일은 대부분 xml 기반의 구성 파일입니다.
내가 unjarring하지 않는 데 관심이있는 이유는 응용 프로그램을 unjar하면 launch4j로 래핑되어 .exe 파일을 다시 만들 수 없기 때문입니다.
답변
다음 u
옵션을 사용할 수 있습니다.jar
Java Tutorials에서 :
jar uf jar-file input-file(s)
“추가되는 파일과 동일한 경로 이름을 가진 아카이브에 이미있는 모든 파일을 덮어 씁니다.”
JAR 파일 업데이트를 참조하십시오 .
항아리 전체를 다시 만드는 것보다 훨씬 낫습니다. 프로그램 내에서 이것을 호출하는 것도 가능합니다. Java에서 명령 줄 실행 시도
답변
Vim을 사용할 수 있습니다.
vim my.jar
Vim은 unzip
사용자 환경에서 압축 된 텍스트 파일을 편집 할 수 있습니다.
답변
Java jar 파일은 zip 파일과 동일한 형식입니다. 따라서 아카이브를 수정할 수있는 zip 파일 유틸리티가있는 경우 발을 들여 놓을 수 있습니다. 두 번째 문제는 만약 당신이 클래스 나 무언가를 재 컴파일하고 싶다면 아마도 단지 단지 재 빌드해야 할 것입니다. 그러나 텍스트 파일 또는 기타 (예 : xml)는 쉽게 수정할 수 있어야합니다.
답변
많은 사람들이 말했듯이 JAR을 다시 만들지 않고는 JAR의 파일을 변경할 수 없습니다. Launch4J를 사용하면 더 나빠집니다. 일단 JAR을 변경하면 EXE를 다시 빌드해야합니다. 그러니이 길을 가지 마십시오.
일반적으로 구성 파일을 JAR에 넣는 것은 좋지 않습니다. 여기 내 제안이 있습니다. 미리 지정된 위치 (예 : 홈 디렉토리, \ Program Files \ 등)에서 구성 파일을 검색합니다. 구성 파일을 찾으면 사용하십시오. 그렇지 않으면 JAR에있는 것을 폴백으로 사용하십시오. 이렇게하면 미리 결정된 위치에 구성 파일을 작성하기 만하면 프로그램이이를 선택합니다.
이 접근 방식의 또 다른 이점은 소프트웨어를 업그레이드해도 수정 된 구성 파일을 덮어 쓰지 않는다는 것입니다.
답변
이 도움이되는지 확실하지 않지만 추출하지 않고 편집 할 수 있습니다.
- vi 편집기에서 jar 파일 열기
- 목록에서 편집 할 파일을 선택하십시오
- Enter 키를 눌러 파일을 열고 변경자를 수행하고 매우 간단하게 저장하십시오.
자세한 내용은 블로그 게시물을 확인하십시오.
http://vinurip.blogspot.com/2015/04/how-to-edit-contents-of-jar-file-on-mac.html
답변
답변
dfa가 말한 내용을 확장하려면 jar 파일이 zip 파일처럼 설정되어 있기 때문입니다. 파일을 수정하려면 모든 항목을 읽고 변경할 항목을 수정 한 다음 항목을 jar 파일에 다시 써야합니다. 나는 전에 이것을해야했고, 그것이 내가 그것을 할 수있는 유일한 방법이었다.
편집하다
이것은 파일 스트림 인 내부에서 Java jar 파일 편집기를 사용하고 있습니다. 나는 그것을 할 수있는 방법이 있다고 확신합니다. 전체 병을 메모리로 읽고 모든 것을 수정 한 다음 파일 스트림에 다시 쓸 수 있습니다. zip 헤더의 ToC가 쓰기 시간에 정의되어야한다고 믿기 때문에 이것이 내가 7-Zip과 같은 유틸리티가하고 있다고 믿는다. 그러나 나는 틀릴 수 있습니다.