Safeguard
Developer Tools•

Will a scanner see JAR or DLL files you check into the repo?

JAR and DLL files referenced by path have no coordinates in a manifest, so manifest scanners often miss them. How to find and inventory them.

Safeguard Security Team
3 min read

Often not. A JAR or DLL referenced by file path carries no registry name or version in the build file, so a manifest scanner has nothing to match. Detection needs file fingerprinting or a manual inventory. Treat checked in binaries as a separate category with its own list.

How binaries end up in repositories

Teams commit libraries when a vendor supplies them directly, when a package is no longer on a registry, or when an old build needed a quick fix. The Gradle documentation shows the pattern for file dependencies: a dependency can name files directly, for example through files with a path such as libs/commons-lang.jar, or a fileTree over a directory. The build works, but the dependency is identified only by a path.

Notice the file names in that documentation example name a library but state no version. Real files often have versions in the name, but that is a convention, not metadata a scanner can trust.

Why a manifest scanner is blind

Registry coordinates such as group, artifact and version let a scanner ask which advisories apply. A path gives none of that. The scanner may see the build line and ignore it, or fail to recognise the library inside the archive.

The Gradle documentation also warns that the order of files in a FileTree is not guaranteed to be stable, even on the same computer, which means builds using file trees can behave inconsistently. Another reason to prefer declared coordinates.

Find them

git ls-files | grep -Ei '\.(jar|war|ear|dll|nupkg)$'

Then search build files for path based dependencies, such as files and fileTree calls in Gradle, system scope in Maven, or direct references in project files.

Identify each one

  1. Read the archive's own metadata. A JAR usually has a manifest and often a Maven properties file with group, artifact and version.
  2. Compute a hash and look it up in a public artifact repository index, which can map a hash back to a known release.
  3. If it is not a known release, it may be a custom build. Record who made it and from what source.
  4. Note the license too, because it travels with the code.

Fix or record

FindingAction
Same artifact exists on a registryReplace with a declared dependency
Custom or patched buildRecord in inventory with source and diff
Vendor supplied onlyRecord version and vendor contact
Nobody knows what it isTreat as high priority to identify

Feed the inventory into your SBOM. See copied code and your SBOM and detecting vulnerable code in shaded uber JARs.

Safeguard offers SBOM and dependency scanning and a free scan at gold.safeguard.sh/scan. Test any tool against a committed JAR to see what it reports.

Quick check

Is a version in the file name reliable?

It is a hint. Confirm against the archive's internal metadata or a hash lookup.

Should binaries ever be committed?

Sometimes it is unavoidable. If so, inventory them and review on a schedule.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.