JAR 파일 생성을 위한 JarOutputStream 문제 해결
java.util.jar.JarOutputStream을 사용하여 프로그래밍 방식으로 JAR 파일을 생성하는 것은 간단해 보일 수 있지만 특정 차이로 인해 예기치 않은 문제가 발생할 수 있습니다. 이 문서에서는 이러한 문서화되지 않은 문제를 살펴보고 유효한 JAR 파일을 생성하기 위한 포괄적인 솔루션을 제공합니다.
특이점 이해
JarOutputStream을 사용할 때는 다음과 같은 문서화되지 않은 규칙을 준수하는 것이 중요합니다.
- 디렉터리 이름은 '/' 슬래시로 끝나야 합니다.
- 경로는 ''가 아닌 '/' 슬래시를 사용해야 합니다.
- 항목은 '/' 슬래시로 시작할 수 없습니다.
올바른 접근 방식 구현
다음은 앞서 언급한 문제점을 해결하면서 매니페스트 파일로 JAR 파일을 생성하는 방법에 대한 자세한 예입니다.
<code class="java">public void run() throws IOException { // Prepare the manifest file Manifest manifest = new Manifest(); manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); // Create a new JAROutputStream with the manifest JarOutputStream target = new JarOutputStream(new FileOutputStream("output.jar"), manifest); // Iterate over the source directory and add files to the JAR add(new File("inputDirectory"), target); // Close the JAROutputStream target.close(); } private void add(File source, JarOutputStream target) throws IOException { // Prepare the entry path String name = source.getPath().replace("\", "/"); // Handle directories if (source.isDirectory()) { if (!name.endsWith("/")) { name += "/"; } // Create a directory entry with appropriate timestamps JarEntry entry = new JarEntry(name); entry.setTime(source.lastModified()); target.putNextEntry(entry); target.closeEntry(); // Recursively add files within the directory for (File nestedFile : source.listFiles()) { add(nestedFile, target); } } // Handle files else { // Create a file entry with appropriate timestamps JarEntry entry = new JarEntry(name); entry.setTime(source.lastModified()); target.putNextEntry(entry); // Read and write the file contents to the JAR try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(source))) { byte[] buffer = new byte[1024]; while (true) { int count = in.read(buffer); if (count == -1) break; target.write(buffer, 0, count); } target.closeEntry(); } } }</code>
By 이러한 지침을 따르면 이제 프로그래밍 방식으로 유효한 JAR 파일을 자신있게 생성하여 해당 파일에 포함된 라이브러리 및 기타 리소스에 의도한 대로 액세스할 수 있습니다.
위 내용은 Java의 JarOutputStream을 사용하여 JAR 파일을 생성하는 동안 예기치 않은 문제를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

Dreamweaver Mac版
시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
