JAR
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
Java JAR Preview.
At a glance
| Purpose | A Java archive (.jar, or a web or enterprise archive): a ZIP of compiled classes and resources with a META-INF/MANIFEST.MF. |
| Extensions | .jar |
| Poka parser | poka-jar |
| Viewer | poka-tree-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B4 Summary (see Breadth tiers) |
How much Poka reads
B4 Summary. The container and metadata are read and summarised (counts, properties, structure), but the main content is not rendered.
Confidence: medium (the reviewer read the code). Basis: Reviewed 2026-10-26: read parsers/poka-jar/src/main.rs (896 lines) and plugin.json. Seven unit tests, including builds_tree_from_sample and corpus_jars_have_no_integrity_findings over the corpus jsr305-3.0.2.jar. Covers .jar, .war and .ear. The tree reads the central directory and MANIFEST.MF: entry, class and resource counts, size, signed, modular (JPMS), Spring Boot, executable and service-provider flags, the main manifest attributes, and the top 100 packages by class count. Judgement: B4: the archive and manifest are summarised, but no class or resource is shown.
What Poka does not read
- Classes are not decoded: no class, method or field listing
- Individual entries are not listed; packages are summarised by class count (top 100)
- Signatures are detected, not verified
- WAR and EAR deployment descriptors (web.xml, application.xml) are not read
- Manifest values are cut at 240 characters; files over 512 MiB are cut without a flag
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- zip (used; MIT; Rust)
- jclassfile (candidate; MIT; Rust; https://github.com/hextriclosan/rusty-jvm/tree/main/jclassfile) — Parses .class files per JVMS ch. 4; no JAR/manifest handling (use with the zip crate). crates.io v0.6.1 updated 2026-08-06.
- classy (candidate; Apache-2.0; Rust; https://github.com/andygrove/classy) — Parses Java class files (Java SE 17); crate last updated 2023-07-21; author unsure of further development.
- ClassGraph (candidate; MIT; Java; https://github.com/classgraph/classgraph) — Scans jarfiles and reads classfile bytecode without loading classes; ClassGraph 6 needs JDK 25+, v5 branch JDK 17+.
- ASM (candidate; BSD-3-Clause; Java; https://asm.ow2.io/) — Bytecode analysis/manipulation framework; page implies it reads class files, does not itself open JARs.
- Apache Commons Compress (candidate; Apache-2.0; Java; https://commons.apache.org/proper/commons-compress/) — Reads the ZIP container (page lists zip, does not name JAR explicitly); requires Java 8+.
Sources
- parsers/poka-jar/src/main.rs
- parsers/poka-jar/plugin.json