theonedev/onedev · error · RuntimeException

Invalid version string '${versionStr}'.

Error message

Invalid version string '${versionStr}'.

What it means

The Version constructor splits the version string into major.minor.patch (plus optional pre-release after '-'); a fourth dotted component (or otherwise malformed numeric parts) makes the string unparseable and triggers this RuntimeException. This is a parser guard for version strings.

Source

Thrown at server-core/src/main/java/io/onedev/server/util/Version.java:65

		versionStr = StringUtils.deleteWhitespace(versionStr);
		String[] fields = StringUtils.split(versionStr, '-');
		Preconditions.checkState(fields.length >= 1);
		String[] parts = StringUtils.split(fields[0], '.');

		major = Integer.parseInt(parts[0]);
		Preconditions.checkArgument(major>=0);
		
		if (parts.length >= 2) {
			minor = Integer.parseInt(parts[1]);
			Preconditions.checkArgument(minor>=0);
		}
		if (parts.length >= 3) {
			patch = Integer.parseInt(parts[2]);
			Preconditions.checkArgument(patch>=0);
		}
		
		if (parts.length >= 4)
			throw new RuntimeException("Invalid version string '" + versionStr + "'.");
		
		if (fields.length >= 2) 
			qualifier = fields[1];
		if (fields.length >= 3) {
			build = Integer.parseInt(fields[2]);
			Preconditions.checkArgument(build>=0);
		}
		
		if (fields.length >= 4) 
			throw new RuntimeException("Invalid version string '" + versionStr + "'.");
	}
	
	public Version(int major, int minor, int patch, String qualifier, int build) {
		Preconditions.checkArgument(major>=0, "Major version should be a positive integer.");
		this.major = major;
		
		if (minor >= 0) {
			this.minor = minor;

View on GitHub (pinned to d44925c47c)

Solutions

  1. Use a version string of the form major[.minor[.patch]][-qualifier].
  2. Strip extra numeric components before parsing.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at server-core/src/main/java/io/onedev/server/util/Version.java:65 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06). Data as JSON: /api/errors/9788dc8b2d1e51f4. Report an issue: GitHub.