quarkusio/quarkus · error · IllegalStateException
Value is not set for %s.%s(). Most probably an older version
Error message
Value is not set for %s.%s(). Most probably an older version of Jandex was used to index an application dependency. Make sure that Jandex 2.1+ is used.
What it means
When generating an annotation literal, each annotation member must have a value — either present in the AnnotationInstance or a declared default. If neither exists, Arc throws IllegalStateException advising that a Jandex older than 2.1 likely produced the index (older versions did not record default values).
Source
Thrown at independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/AnnotationLiteralProcessor.java:110
}
AnnotationLiteralClassInfo literal = cache.getValue(new CacheKey(annotationClass));
ClassDesc generatedClass = ClassDesc.of(literal.generatedClassName);
if (literal.annotationMembers().isEmpty()) {
return bc.getStaticField(FieldDesc.of(generatedClass, "INSTANCE", generatedClass));
}
Expr[] ctorArgs = new Expr[literal.annotationMembers().size()];
int argIndex = 0;
for (MethodInfo annotationMember : literal.annotationMembers()) {
AnnotationValue value = annotationInstance.value(annotationMember.name());
if (value == null) {
value = annotationMember.defaultValue();
}
if (value == null) {
throw new IllegalStateException(String.format(
"Value is not set for %s.%s(). Most probably an older version of Jandex was used to index an application dependency. Make sure that Jandex 2.1+ is used.",
annotationMember.declaringClass().name(), annotationMember.name()));
}
Expr valueExpr = loadValue(bc, literal, annotationMember, value);
ctorArgs[argIndex] = valueExpr;
argIndex++;
}
ConstructorDesc ctor = ConstructorDesc.of(generatedClass, literal.annotationMembers()
.stream()
.map(it -> classDescOf(it.returnType()))
.toArray(ClassDesc[]::new));
return bc.new_(ctor, ctorArgs);
}
/**
* Generates a bytecode sequence to load given annotation member value.View on GitHub (pinned to e1c734241f)
Solutions
- Upgrade Jandex to 2.1+ (and matching smallrye/jandex artifacts) in the build
- Re-index the offending dependency (mvn clean install with jandex plugin)
- Give the annotation member a default value or supply an explicit value at usage
Example fix
// before <dependency> <groupId>io.smallrye</groupId> <artifactId>jandex</artifactId> <version>2.0.3.Final</version> </dependency> // after <dependency> <groupId>io.smallrye</groupId> <artifactId>jandex</artifactId> <version>3.x.x</version> </dependency>
Defensive patterns
Strategy: validation
Validate before calling
// verify Jandex version
if (Version.getString().startsWith("2.0")) throw new IllegalStateException("upgrade Jandex"); Prevention
- Use Jandex 2.1+ and defaults on annotation members
When it happens
Trigger: Annotation member with no explicit value on the usage site AND no defaultValue() in the Jandex index, encountered during literal generation in create().
Common situations: Stale or old Jandex version on the build classpath indexing an application dependency; dependency indexed with outdated tooling producing missing defaultValue metadata; annotation modified after indexing without reindex.
Related errors
- Annotation does not have @Retention(RUNTIME):
- Annotation class not available:
- Class of nested annotation missing
- Array component kind is
- Unknown annotation attribute value:
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/a0299e38f7c1c7f3.
Report an issue: GitHub.