apache/skywalking · critical · IllegalArgumentException
{slot} expects a plain integer literal, got '{numText}' (suf
Error message
{slot} expects a plain integer literal, got '{numText}' (suffixes / decimals / exponents are not accepted here) What it means
Wrapped-into-UnexpectedException failure in the MeterSystem constructor: ClassPath.from(MeterSystem.class.getClassLoader()) threw IOException while building the classpath scanner used to discover @MeterFunction-annotated classes under org.apache.skywalking. This is an environment/classloader failure at OAP boot, before any meter processing starts.
Source
Thrown at oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/v2/compiler/LALScriptParser.java:886
}
return mul.valueAccessTerm(0);
}
/**
* Parse a NUMBER literal that must represent a plain integer (no
* decimal, no exponent, no Java-style suffix). Used by integer-only
* grammar slots — {@code rateLimit { rpm N }} and {@code list[N]} —
* which share the lexer NUMBER token with arithmetic expressions but
* cannot accept the suffixes/forms supported there. Throws a clear
* compile-time error for shape violations and for values that exceed
* Java's {@code long} range (rather than letting
* {@link NumberFormatException} leak from {@code Long.parseLong}).
*/
private static long parseStrictInteger(final String numText, final String slot) {
for (int i = 0; i < numText.length(); i++) {
final char c = numText.charAt(i);
if (c < '0' || c > '9') {
throw new IllegalArgumentException(
slot + " expects a plain integer literal, got '" + numText
+ "' (suffixes / decimals / exponents are not accepted here)");
}
}
try {
return Long.parseLong(numText);
} catch (NumberFormatException e) {
throw new IllegalArgumentException(
slot + " value '" + numText + "' exceeds the supported range "
+ "(must fit in a Java long)");
}
}
/**
* Like {@link #parseStrictInteger} but additionally requires the value
* to fit in a Java {@code int}. Used by the {@code [index]} grammar
* slot, where silent narrowing of an oversized literal would wrap to a
* negative index instead of producing a clear error.View on GitHub (pinned to 102af09b4a)
Solutions
- Verify the OAP install: re-download the distribution / re-pull the docker image and check jar integrity (unzip -t on oap-libs jars)
- Check filesystem permissions and disk space on the OAP directory and its classpath jars
- If embedding OAP in a custom classloader, ensure ClassPath.from can enumerate the URLs — prefer plain URLClassLoader jars over exotic loaders
Defensive patterns
Strategy: retry
Prevention
- Verify distribution/docker image integrity before startup (checksums, unzip -t)
- Avoid exotic classloaders for OAP libs; keep jars readable on local disk
- Monitor disk space and NFS health on the OAP install directory
When it happens
Trigger: OAP startup with a broken deployment: unreadable jar files in the classpath (truncated download, corrupted docker layer), an exotic classloader that ClassPath (Guava's ClassPath) cannot enumerate, or filesystem permission errors on the install directory.
Common situations: Corrupted distribution tarball or docker image; NFS-mounted OAP libs with intermittent I/O errors; running in a fat classloader (some application servers, shaded runners) that Guava cannot walk; disk-full during image pull.
Related errors
- Unsupported extractor statement in LAL rule at line {sourceL
- {slot} value '{numText}' exceeds the supported range (must f
- {slot} value '{numText}' exceeds the supported range (must f
- Unclosed interpolation in: {s}
- Cannot parse interpolation expression: {expr}
AI-assisted analysis of apache/skywalking@102af09b4a (2026-08-14).
Data as JSON: /api/errors/ee4f1af757aafc1a.
Report an issue: GitHub.