Manifest Format
What's in a manifest file and how to search them.
File Location
Manifests live in .jackknife/manifest/ with one file per indexed jar:
.jackknife/manifest/<groupId>/<artifact>-<version>.jar.manifest
The groupId is a flat directory name with dots — not nested directories. This keeps the structure shallow and predictable:
.jackknife/manifest/
com.fasterxml.jackson.core/
jackson-core-2.15.3.jar.manifest
jackson-databind-2.15.3.jar.manifest
jackson-annotations-2.15.3.jar.manifest
org.tomitribe/
tomitribe-util-1.3.23.jar.manifest
jakarta.servlet/
jakarta.servlet-api-6.0.0.jar.manifest
Format
A manifest file is plain text. Class names are listed one per line in dotted format, followed by an optional resources section.
Example
com.fasterxml.jackson.core.JsonFactory
com.fasterxml.jackson.core.JsonFactory$Feature
com.fasterxml.jackson.core.JsonGenerator
com.fasterxml.jackson.core.JsonGenerator$Feature
com.fasterxml.jackson.core.JsonParser
com.fasterxml.jackson.core.JsonParser$Feature
com.fasterxml.jackson.core.JsonParser$NumberType
com.fasterxml.jackson.core.JsonToken
com.fasterxml.jackson.core.ObjectCodec
com.fasterxml.jackson.core.Version
com.fasterxml.jackson.core.io.IOContext
com.fasterxml.jackson.core.json.JsonReadContext
com.fasterxml.jackson.core.json.JsonWriteContext
com.fasterxml.jackson.core.type.TypeReference
com.fasterxml.jackson.core.util.DefaultPrettyPrinter
# resources
META-INF/MANIFEST.MF
META-INF/LICENSE
META-INF/NOTICE
META-INF/services/com.fasterxml.jackson.core.JsonFactory
META-INF/versions/9/module-info.class
What’s Included
- Every
.classfile in the jar, converted to dotted class name format - Inner classes appear with their
$separator:JsonFactory$Feature - Resources are listed after a
# resourcesheader line
What’s Excluded
module-info.class— skipped, not a real classpackage-info.class— skipped, contains only annotations- Directory entries — skipped, only files are listed
What’s NOT in the Manifest
No method signatures, no field info, no bytecode analysis. The manifest is purely a listing of what’s in the jar. This is intentional — it’s why indexing is sub-second. Method signatures and implementation details come from the decompile step, which produces full .java source files on demand.
Searching Manifests
Find a Class
Grep "ObjectMapper" .jackknife/manifest/
This tells you which jar contains the class and gives you the full package name. If you searched for ObjectMapper, you’ll see it’s com.fasterxml.jackson.databind.ObjectMapper in jackson-databind-2.15.3.jar.manifest.
Find Inner Classes
Grep "Join\$" .jackknife/manifest/
Lists all inner classes of Join: Join$NameCallback, Join$StringFormatCallback, etc.
Find Resources
Grep "META-INF/services" .jackknife/manifest/
Shows all jars that register service providers, and which interfaces they provide implementations for.
Find Classes by Pattern
Grep "Factory$" .jackknife/manifest/
All classes ending in Factory across every indexed jar.