apache/dubbo · error · UnsupportedOperationException
No instance of 'ConfigurationUtils' for you!
Error message
No instance of 'ConfigurationUtils' for you!
What it means
Thrown from the private constructor of ConfigurationUtils, which is a final utility class with only static methods. The constructor always throws UnsupportedOperationException to prevent accidental instantiation. This is a standard pattern for enforcing that a utility class is never instantiated.
Source
Thrown at dubbo-common/src/main/java/org/apache/dubbo/common/config/ConfigurationUtils.java:56
import java.util.Objects;
import java.util.Properties;
import java.util.Set;
import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_SERVER_SHUTDOWN_TIMEOUT;
import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_SECONDS_KEY;
import static org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_PROPERTY_TYPE_MISMATCH;
/**
* Utilities for manipulating configurations from different sources
*/
public final class ConfigurationUtils {
/**
* Forbids instantiation.
*/
private ConfigurationUtils() {
throw new UnsupportedOperationException("No instance of 'ConfigurationUtils' for you! ");
}
private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(ConfigurationUtils.class);
private static final Set<String> securityKey;
private static volatile long expectedShutdownTime = Long.MAX_VALUE;
static {
Set<String> keys = new HashSet<>();
keys.add("accesslog");
keys.add("router");
keys.add("rule");
keys.add("runtime");
keys.add("type");
securityKey = Collections.unmodifiableSet(keys);
}
/**View on GitHub (pinned to 3a3043227f)
Solutions
- Stop instantiating the class — all methods on ConfigurationUtils are static. Call them directly: ConfigurationUtils.getProperty(scopeModel, key).
- If a reflection-based framework is responsible, configure it to exclude ConfigurationUtils from instantiation (e.g. Objenesis exclusions, Jackson @JsonIgnoreType, or module-specific excludes).
- If testing, mock the static methods (e.g. Mockito mockStatic) rather than constructing an instance.
Example fix
// before ConfigurationUtils utils = new ConfigurationUtils(); String v = utils.getProperty(scopeModel, "key"); // after String v = ConfigurationUtils.getProperty(scopeModel, "key");
Defensive patterns
Strategy: validation
Validate before calling
// Ensure you never call 'new ConfigurationUtils()'. // Use static access only: ConfigurationUtils.getProperty(scopeModel, key);
Type guard
if (clazz == ConfigurationUtils.class) {
// do not attempt instantiation; all members are static
throw new UnsupportedOperationException("ConfigurationUtils is a utility class");
} Try / catch
try {
Constructor<?> c = clazz.getDeclaredConstructor();
c.setAccessible(true);
c.newInstance();
} catch (InvocationTargetException e) {
if (e.getCause() instanceof UnsupportedOperationException) {
// expected for utility classes — skip
}
} Prevention
- Never instantiate utility classes — use static method calls.
- Configure reflection frameworks (Objenesis, serialization libs) to exclude utility classes.
- In tests, use mockStatic instead of constructing instances.
When it happens
Trigger: Any code that calls new ConfigurationUtils() — whether via reflection (Constructor.setAccessible(true) + newInstance) or by a subclass/caller that bypasses the private modifier through an accessibility hack. Normal usage (static method calls) never triggers this.
Common situations: Reflection-based frameworks (certain serialization or DI containers) that try to instantiate any class they encounter. Unit-test mocking frameworks that attempt to create instances of classes they should not. A developer unfamiliar with the utility-class pattern writing new ConfigurationUtils().getGlobalProperty(...).
Related errors
- No instance of 'FileCacheStoreFactory' for you!
- create bean instance failed, type=${className}
- Expect only one but found ${size} matched constructors for t
- None matched constructor was found for type: ${type}
- No instance of 'NetUtils' for you!
AI-assisted analysis of apache/dubbo@3a3043227f (2026-08-14).
Data as JSON: /api/errors/e5218ec1605d6b16.
Report an issue: GitHub.