JAR With a Nested Library JAR
The nested-JAR layout an executable fat jar uses: a manifest with a Class-Path entry and a second JAR stored uncompressed under BOOT-INF/lib so it can be read in place without being extracted first. It contains resources only - properties, JSON and text, no compiled bytecode - and the manifest uses the CRLF line endings the JAR specification requires.
- MANIFEST.MF
- application.json
- novus-resources.jar
- README.txt
Specifications
- Seed
- 20260807
- Members
- 4
- Nested Archives
- 1
- Nesting Depth
- 2
- Layout
- BOOT-INF/lib nested-jar layout
- Nested Jar Stored
- true
- Manifest Line Endings
- CRLF, as the JAR specification requires
- Contains
- properties, JSON and text only - no .class bytecode
Testing contract
Expected to pass- Scenario
- Read the outer manifest, then open BOOT-INF/lib/novus-resources.jar without extracting it.
- Expected result
- The manifest's Class-Path names the nested jar, the nested jar is stored with method 0 so it can be memory-mapped in place, and it yields its own manifest plus messages.properties.
What is a .jar file?
JAR (Java Archive) is a ZIP-based package that bundles Java class files, resources, and a manifest into a single distributable unit. The manifest can declare an entry point and metadata, making the JAR executable or usable as a library. It is the standard packaging format for the Java ecosystem.
How to use this file
Use an example JAR to test ZIP-based extraction, manifest parsing, classpath and dependency tooling, and Java build or deployment pipelines.
How to use this file for testing
“JAR With a Nested Library JAR” is a deterministic Novus Examples fixture for Conversion testing, Metadata testing. The same content exported across many formats and linked as a group, so you can convert one and diff against the expected twin.
Documented properties for this file: seed 20260807. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Archive fixtures are documented down to their member list (shown on this page) and are deliberately safe — no zip bombs, executables, or hidden payloads. Test extractors against nested, unicode, empty, and encrypted variants.
Code examples
unzip -l jar-with-nested-jar.jar # list members
unzip jar-with-nested-jar.jar -d out/ # extractRelated files
- txtConvert v2 Archive SHA-256 ListGNU-style SHA-256 list for the two canonical TAR members, preserving relative paths and full lowercase digests. Stable P8 artifact p8-convert-archive-sha256.

- tarTAR - Directory Members and an Empty DirectoryThree directory records with distinct modes, one of which - tree/empty/ - has no members underneath it and therefore exists only because the record does. A reader that synthesises directories from member paths alone silently loses it, and loses the 0750 and 0700 modes on the other two.

- tarTAR - FIFO and Device Node RecordsA FIFO, a character device and a block device, each a header with no data blocks and with the device numbers in the devmajor/devminor fields. Unprivileged extraction cannot create the two device nodes, so the correct behaviour is to skip them with a warning rather than to abort the whole archive or to create empty regular files in their place.

- tarTAR - GNU FormatGNU tar's extension of the same header, identified by its own magic: long names get their own 'L' record, oversized numeric fields switch to base-256, and sparse files get an in-header map. All three archives in this group hold byte-identical members with identical ownership and modification times, so any other difference a reader reports between them comes from the header encoding alone.

- tarTAR - Hard Link Membershare/backup/records.csv is a hard link to a member that appears earlier in the stream, so its content is stored exactly once. Order matters: a reader that extracts members out of sequence, or that copies content instead of linking, changes both the on-disk byte count and the inode relationship the archive is describing.

- tarTAR - Large UID/GID (GNU base-256)The uid and gid fields hold 7 octal digits, so they top out at 2097151. This member is owned by uid 3000000, which needs GNU base-256 encoding: the field's high bit is set and the remaining bytes are a big-endian integer. Its group sibling encodes the same ownership the other way, so a reader can be checked against both without a second variable.

Generated by generation/archives_p7.py. Free for any use, no attribution required — license.