src/Scanner/__Libraries/StellaOps.Scanner.Analyzers.Lang.Java/JavaLanguageAnalyzer.cs normalises JAR/WAR/EAR/PAR archives within the scan root.
Extracts META-INF/maven/**/pom.properties alongside MANIFEST.MF, building Maven PURLs and capturing manifest metadata (implementation info, main class) per component.
Evidence locators encode archive-relative paths (archive.jar!META-INF/...) and include cryptographic hashes; EntryTrace usage hints mark archives referenced by runtime entrypoints.
Focuses on installed artifacts; build-time descriptors (Gradle/SBT) are out of scope for the core analyzer.
pkg/fanal/analyzer/language/java/jar/jar.go registers a post-analyzer parsing archives via pkg/dependency/parser/java/jar, leveraging the Java DB client for supplemental metadata.
Syft builds the SBOM before matching (grype/pkg/syft_provider.go), supplying Java packages and metadata.
The Java matcher accepts syftPkg.JavaPkg and Jenkins plugin packages; it can query Maven by SHA when POM metadata is missing and falls back to ecosystem/CPE matching (grype/matcher/java/matcher.go).
No deterministic archive hashing or EntryTrace linkage; provenance mirrors Syft’s SBOM plus Anchore’s upstream lookups.
Archive evidence: StellaOps captures archive path, hashes, and manifest data for deterministic attestation; Trivy, Snyk, and Grype derive dependency graphs without preserving per-entry evidence.