# java.util.MissingResourceException: Can't find bundle for base name

- **ID:** `java/missing-resource-bundle`
- **Domain:** java
- **Category:** resource_error
- **Verification:** ai_generated
- **Fix Rate:** 90%

## Root Cause

The ResourceBundle.getBundle() method cannot locate the properties file or class bundle for the specified base name, usually due to a missing file, incorrect classpath, or wrong locale.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Java 8 | active | — | — |
| Java 11 | active | — | — |
| Java 17 | active | — | — |
| Java 21 | active | — | — |

## Workarounds

1. **Ensure the properties file exists in the classpath at the correct location. For example, if base name is `com.example.messages`, place `messages.properties` in `src/main/resources/com/example/`.** (95% success)
   ```
   Ensure the properties file exists in the classpath at the correct location. For example, if base name is `com.example.messages`, place `messages.properties` in `src/main/resources/com/example/`.
   ```
2. **Use the full qualified base name with package: `ResourceBundle.getBundle("com.example.i18n.messages")` and ensure the file is at `com/example/i18n/messages.properties`.** (90% success)
   ```
   Use the full qualified base name with package: `ResourceBundle.getBundle("com.example.i18n.messages")` and ensure the file is at `com/example/i18n/messages.properties`.
   ```
3. **Provide a default locale bundle to avoid fallback issues: add `messages.properties` (without locale suffix) as a fallback.** (85% success)
   ```
   Provide a default locale bundle to avoid fallback issues: add `messages.properties` (without locale suffix) as a fallback.
   ```

## Dead Ends

- **** — ResourceBundle expects a .properties file or a class; an empty file with wrong extension is ignored. (80% fail)
- **** — ResourceBundle falls back to the default locale, which may also be missing, causing the same error. (70% fail)
- **** — The base name must include the full package path; moving the file without updating the name breaks the lookup. (90% fail)
