Skip to main content

java-classpath-search

Use when you need to find which JAR contains a Java class, resolve import statements, identify classpath conflicts, or discover which dependency provides a class. Accepts fully qualified class names, simple class names, or partial patterns.

Ir para a instalação

Informações da origem

Repositório
quarkusio/quarkusdev-skills
Última atividade na origem
24 de março de 2026 às 16:47
Idioma detectado do SKILL.md
inglês
Estrelas
4
Forks
2

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
2 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
java-classpath-search
description
Use when you need to find which JAR contains a Java class, resolve import statements, identify classpath conflicts, or discover which dependency provides a class. Accepts fully qualified class names, simple class names, or partial patterns.
# Java Classpath Search Fast search across all Maven dependencies to find which JARs contain a Java class. ## Overview This skill searches a pre-built index of all classes in your Maven local repository, providing instant results for classpath queries. It's essential for resolving imports, debugging classpath conflicts, and discovering dependency sources. ## When to Use - Finding which dependency provides a class - Resolving "class not found" errors - Checking for version conflicts (multiple JARs with same class) - Discovering available implementations of an interface - Understanding your project's dependency tree - Verifying a dependency is in your local Maven repo ## Quick Reference **Search patterns:** - Fully qualified: `com.fasterxml.jackson.databind.ObjectMapper` - Simple name: `ObjectMapper` - Partial pattern: `jackson.ObjectMapper` **Index location:** `$HOME/.cache/quarkusdev-skills/class-index.txt` **Index refresh:** Automatic if missing or older than 7 days ## Implementation ### Step 1: Determine Search Pattern Parse the user input (available as `$ARGUMENTS`): | Input | Pattern Conversion | |-------|-------------------| | `com.fasterxml.jackson.databind.ObjectMapper` | `com/fasterxml/jackson/databind/ObjectMapper.class` | | `ObjectMapper` | `/ObjectMapper.class` (any path ending with this) | | `jackson.ObjectMapper` | `jackson/ObjectMapper.class` | ### Step 2: Ensure Index is Available The class index is a tab-separated file mapping class paths to JAR paths. ```bash INDEX="$HOME/.cache/quarkusdev-skills/class-index.txt" # Check if index needs rebuilding (missing or older than 7 days) if [ ! -f "$INDEX" ] || [ $(find "$INDEX" -mtime +7 2>/dev/null | wc -l) -gt 0 ]; then # Dispatch index rebuild as subagent (can take 30-60 seconds) # Use Agent tool with prompt: # "Run the build-class-index.sh script from this skill directory # Report when indexing is complete." # Wait for subagent to complete before continuing fi ``` **Note:** Index building is dispatched to a subagent to keep the main conversation responsive. The script uses 8 parallel workers and typically completes in under 60 seconds. ### Step 3: Search the Index Search is instant (just grep on a text file): **For fully qualified class name:** ```bash grep "com/fasterxml/jackson/databind/ObjectMapper\.class" "$INDEX" ``` **For simple class name:** ```bash grep -i "/ObjectMapper\.class" "$INDEX" ``` **For partial pattern:** ```bash grep -i "jackson.*ObjectMapper\.class" "$INDEX" ``` ### Step 4: Check Local Build Output Also search project build directories for classes: ```bash find . -path "*/target/classes/*ClassName.class" 2>/dev/null ``` ### Step 5: Present Results Format output to show: 1. **Class path within JAR** - The full package path 2. **JAR file path** - Highlight groupId, artifactId, version from path 3. **Maven coordinates** - Extract from JAR path: ``` ~/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.15.0/jackson-databind-2.15.0.jar ``` Becomes: `com.fasterxml.jackson.core:jackson-databind:2.15.0` 4. **Conflict warnings** - If multiple versions exist, flag as potential classpath issue **Example output format:** ``` Found in 2 locations: 1. com/fasterxml/jackson/databind/ObjectMapper.class JAR: com.fasterxml.jackson.core:jackson-databind:2.15.0 Path: ~/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.15.0/jackson-databind-2.15.0.jar 2. com/fasterxml/jackson/databind/ObjectMapper.class JAR: com.fasterxml.jackson.core:jackson-databind:2.14.2 Path: ~/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.14.2/jackson-databind-2.14.2.jar ⚠️ WARNING: Multiple versions detected - potential classpath conflict ``` ### Step 6: Handle No Results If search returns nothing: 1. **Rebuild index** - Run the build-class-index.sh script from this skill directory 2. **Check spelling** - Suggest corrected class name 3. **Verify dependency** - Class might not be in local repo, suggest `mvn dependency:resolve` 4. **Broaden search** - Try searching for just the class name without package ## Index Details **What's indexed:** - All `.class` files in `~/.m2/repository/**/*.jar` - Excludes: `-sources.jar`, `-javadoc.jar`, `-tests.jar`, `-test-*.jar` - Excludes: Inner classes (`$`), `module-info`, `package-info` **Index format:** ``` com/example/MyClass.class\t/path/to/artifact-1.0.0.jar ``` **Build time:** ~30-60 seconds with 8 parallel workers **Size:** Varies by repository size (typically 5-20 MB) ## Tips - Index is automatically refreshed every 7 days - For inner classes, search JAR directly: `jar tf /path/to.jar | grep ClassName` - Use `-i` flag for case-insensitive searches - The index uses 8 parallel workers for fast building - Subagent dispatch keeps main conversation responsive during index builds ## Supporting Tool The index is built by `build-class-index.sh` (included in this skill directory): ```bash #!/bin/bash INDEX_FILE="${1:-$HOME/.cache/quarkusdev-skills/class-index.txt}" REPO_DIR="${2:-$HOME/.m2/repository}" find "$REPO_DIR" -name "*.jar" \ -not -name "*-sources*" \ -not -name "*-javadoc*" \ -not -name "*-tests*" \ -not -name "*-test-*" | \ xargs -P 8 -I{} sh -c ' jar tf "$1" 2>/dev/null | grep "\.class$" | grep -v "module-info\|package-info" | while read cls; do printf "%s\t%s\n" "$cls" "$1" done ' _ {} > "$INDEX_FILE" ``` ## Platform Notes This skill works with: - **Claude Code**: Direct execution via Bash/Agent tools - **Gemini CLI**: Use equivalent bash/file tools - **Codex**: Use RunBash/SubAgent equivalents The `build-class-index.sh` script is platform-independent (standard bash).
Ver no GitHub