Java, Lua, and PE files

glaurung java-recovery-report

Recover a JAR into a project tree and score the result.

writes files or project state 2 worked examples

use it for

The workflow can run CFR or Vineflower, copy resources, compile candidates, and repair missing dependencies. Network dependency resolution is off unless you enable it.

Run glaurung java-recovery-report --help on your installed version before putting the command in a script. Glaurung is still pre-1.0.

input
A JAR or ZIP archive and an output directory for the recovered project.
output
Recovered source candidates, compile status, repair attempts, validation results, blockers, and Markdown/JSON reports.
mode
writes state. Writes the recovered project and report under --output-root.

command shape

syntax

short form
$ glaurung java-recovery-report ARCHIVE [--output-root DIR]

The installed parser is authoritative: glaurung java-recovery-report --help

run it

examples

Run an offline first pass

This fixture run intentionally disables repair and validation. It exposes missing local helpers instead of hiding them.

run

from the engine checkout
$ glaurung java-recovery-report samples/binaries/platforms/windows/amd64/export/java/jdk17/HelloWorld.jar --output-root /tmp/hello-java --no-repair --no-validate --no-compile-candidates

output

captured result captured 2026-08-31, shortened
# Java Recovery Report

Status: blocked
Headline: not_clean_enough: recovered source does not compile.

## Progress
- Sources: 0 generated, 0 parsed, 0 parse errors
- Compile: fail (0 diagnostics)
- Repair: skip (0 applied)
- Validation: skip

## Source/Bytecode Links
- HelloWorld -> n/a; notes=helper_unavailable

captured 2026-08-31, shortened.

Read the result: The blocked result is useful: the local recovery helper was unavailable. Install or point to the required decompiler before trusting a later clean report.

Allow a full local recovery

Keep network resolution off unless the archive truly needs dependencies you cannot supply locally.

run

from the engine checkout
$ glaurung java-recovery-report samples/binaries/platforms/windows/amd64/export/java/jdk17/HelloWorld.jar --output-root /tmp/hello-java --validate-profile full_static

output

captured result captured from the checked-in JAR, 2026-08-31; shortened
# Java Recovery Report

Status: blocked
Headline: Recovery is blocked by compile.

## Progress
- Sources: 0 generated, 0 parsed, 0 parse errors
- Compile: fail (0 diagnostics)
- Repair: fail (0 applied)
- Validation: fail
- Compatibility: 0.68

## Validation Summary
- Profile: full_static
- Checks: compile=fail, abi=fail, resources=pass, metadata=pass, semantics=pass

## Top Blockers
1. Validation failed: compile
2. Validation failed: abi

captured from the checked-in JAR, 2026-08-31; shortened.

Read the result: A full profile does not manufacture missing recovered source. Here it gives a sharper blocked result: compile and ABI fail while resources, metadata, and semantics pass.

used above

important options

--output-root DIR
Write the recovered project here.
--decompiler-engine auto|cfr|vineflower
Choose or auto-select a Java decompiler.
--no-repair
Skip compile-driven repair attempts.
--no-validate
Skip post-recovery validation.
--allow-dependency-network
Permit online dependency resolution; off by default.

These are the flags used by the examples. Run glaurung java-recovery-report --help for the complete parser help.

before you rely on it

checks

keep working

related commands

← all 40 commands