Discover Java API signatures from compiled JARs using javap instead of guessing or relying on incomplete documentation. Use when encountering unknown methods, pagination patterns, union types, or compilation errors from incorrect API assumptions.
Efficiently discover actual API signatures from compiled JARs using javap. This approach eliminates guessing and trial-and-error by examining the compiled bytecode directly.
# Gradle projects
find ~/.gradle/caches -name "*library-name*.jar" -type f 2>/dev/null | head -5
# Maven projects
find ~/.m2/repository -name "*library-name*.jar" -type f 2>/dev/null | head -5
# Project libs
find . -name "*.jar" -type f 2>/dev/null
# List all classes in a package
jar tf /path/to/library.jar | grep "com/example/package" | head -20
# Find specific class
jar tf /path/to/library.jar | grep -i "ClassName"
# Show all public methods
javap -cp /path/to/library.jar com.example.ClassName
# Filter for getters
javap -cp /path/to/library.jar com.example.ClassName | grep -E "public.*get"
# Filter for setters/builders
javap -cp /path/to/library.jar com.example.ClassName | grep -E "public.*(set|with|build)"
# Show full signatures including generics
javap -s -cp /path/to/library.jar com.example.ClassName
Before writing any API call:
List vs Set)# Check for pagination methods
javap -cp /path/to/jar com.example.ApiClient | grep -iE "(page|offset|cursor|limit)"
Common patterns:
pageOffset(Long), pageLimit(Long)pageCursor(String), nextCursor()pageToken(String), nextPageToken()# Look for getActualInstance pattern
javap -cp /path/to/jar com.example.Response | grep -E "(getActualInstance|instanceof)"
Handling union types:
Object actual = response.getActualInstance();
if (actual instanceof TypeA) {
TypeA typed = (TypeA) actual;
}
# Check construction options
javap -cp /path/to/jar com.example.Model | grep -E "(public.*\(|builder|Builder)"
# List enum values
javap -cp /path/to/jar com.example.TokenType | grep -E "public static final"
| Need | Command |
|------|---------|
| Find JAR | find ~/.gradle/caches -name "*name*.jar" |
| List classes | jar tf file.jar \| grep package |
| All methods | javap -cp file.jar com.Class |
| Getters only | javap ... \| grep "get" |
| With generics | javap -s -cp file.jar com.Class |
List, Set, or CollectiongetActualInstance()scripts/discover-api.shreference.mdSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer