redis/jedis · error · InstantiationError

Must not instantiate this class

Error message

Must not instantiate this class

What it means

JsonBuilderFactory is a utility class whose private constructor unconditionally throws InstantiationError to prevent instantiation. It is meant to be used statically only; new JsonBuilderFactory() always fails.

Solutions

  1. Use JsonBuilderFactory's static methods directly instead of creating an instance
  2. Remove instantiation/DI registration of this class from your code
  3. Access builders through the public static fields/methods

Example fix

// before
JsonBuilderFactory factory = new JsonBuilderFactory();
// after
var builder = JsonBuilderFactory.someStaticBuilderMethod();
Defensive patterns

Strategy: type-guard

Validate before calling

// no pre-call check possible; never instantiate

Type guard

// JsonBuilderFactory is final utility; use static access only

Try / catch

// Do not catch InstantiationError; fix the call site to use static methods

Prevention

When it happens

Trigger: Writing new JsonBuilderFactory() or reflection-based instantiation (Constructor.newInstance) of JsonBuilderFactory.

Common situations: Developer habit of instantiating utility classes; code generators or DI frameworks attempting to construct all classes.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of redis/jedis@6dac31d4c2 (2026-09-08). Data as JSON: /api/errors/8316188e5b2d3368. Report an issue: GitHub.

Appendix: source

Thrown at src/main/java/redis/clients/jedis/json/JsonBuilderFactory.java:179

      if (data == null) return null;
      if (data instanceof List) return JSON_NUMBER_LIST.build(data);
      return JSON_ARRAY.build(data);
    }
  };

  public static final Builder<List<JSONArray>> JSON_ARRAY_LIST = new Builder<List<JSONArray>>() {
    @Override
    public List<JSONArray> build(Object data) {
      if (data == null) {
        return null;
      }
      List<Object> list = (List<Object>) data;
      return list.stream().map(o -> JSON_ARRAY.build(o)).collect(Collectors.toList());
    }
  };

  private JsonBuilderFactory() {
    throw new InstantiationError("Must not instantiate this class");
  }
}

View on GitHub (pinned to 6dac31d4c2)