{"record":{"id":"f67d00389e07fef1","repo":"GoogleContainerTools/jib","slug":"container-approot-is-not-an-absolute-unix-style-pa-f67d00","errorCode":null,"errorMessage":"container.appRoot is not an absolute Unix-style path: ${ex.getInvalidPathValue()}","messagePattern":"container\\.appRoot is not an absolute Unix-style path: (.+?)","errorType":"exception","errorClass":"GradleException","httpStatus":null,"severity":"error","filePath":"jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java","lineNumber":147,"sourceCode":"        GradleProjectProperties.getForProject(\n            getProject(),\n            getLogger(),\n            tempDirectoryProvider,\n            jibExtension.getConfigurationName().get());\n    GlobalConfig globalConfig = GlobalConfig.readConfig();\n    Future<Optional<String>> updateCheckFuture =\n        TaskCommon.newUpdateChecker(projectProperties, globalConfig, getLogger());\n    try {\n      PluginConfigurationProcessor.createJibBuildRunnerForTarImage(\n              new GradleRawConfiguration(jibExtension),\n              ignored -> Optional.empty(),\n              projectProperties,\n              globalConfig,\n              new GradleHelpfulSuggestions(HELPFUL_SUGGESTIONS_PREFIX))\n          .runBuild();\n\n    } catch (InvalidAppRootException ex) {\n      throw new GradleException(\n          \"container.appRoot is not an absolute Unix-style path: \" + ex.getInvalidPathValue(), ex);\n\n    } catch (InvalidContainerizingModeException ex) {\n      throw new GradleException(\n          \"invalid value for containerizingMode: \" + ex.getInvalidContainerizingMode(), ex);\n\n    } catch (InvalidWorkingDirectoryException ex) {\n      throw new GradleException(\n          \"container.workingDirectory is not an absolute Unix-style path: \"\n              + ex.getInvalidPathValue(),\n          ex);\n    } catch (InvalidPlatformException ex) {\n      throw new GradleException(\n          \"from.platforms contains a platform configuration that is missing required values or has invalid values: \"\n              + ex.getMessage()\n              + \": \"\n              + ex.getInvalidPlatform(),\n          ex);","sourceCodeStart":129,"sourceCodeEnd":165,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java#L129-L165","documentation":"Jib validates that container.appRoot is an absolute Unix-style path (e.g. /app) when building the image tarball via gradle jibBuildTar. InvalidAppRootException is thrown for relative paths, Windows-style paths, or values without a leading slash, wrapped into this GradleException with the offending value.","triggerScenarios":"Running gradle jibBuildTar with jib { container { appRoot = 'app' } } (no leading slash), a Windows path like 'C:\\app', or otherwise non-Unix absolute path.","commonSituations":"Setting appRoot to a relative directory for convenience; porting a Windows developer's config; confusing appRoot with a classpath-relative path; trailing typo dropping the leading '/' while fixing other config.","solutions":["Prefix the value with '/' so it is an absolute Unix path, e.g. jib { container { appRoot = '/app' } }","Remove any Windows drive letters or backslashes; use forward slashes only","If you didn't intend to set appRoot, delete the container.appRoot line to use the default /app"],"exampleFix":"// before\njib { container { appRoot = 'myapp' } }\n// after\njib { container { appRoot = '/myapp' } }","handlingStrategy":"validation","validationCode":"def appRoot = project.jib.container.appRoot.getOrElse('/app')\nif (!(appRoot ==~ /^\\/[^\\0]+/)) throw new GradleException(\"container.appRoot must be absolute Unix path: $appRoot\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always start appRoot with '/'","Never use Windows-style paths in container config","Prefer the default /app unless a framework requires another absolute path"],"tags":["jib","gradle","validation","approot"],"backgroundTag":"invalid-config-value","analyzedSha":"fb949e2676afbbd7dd7a1ef61e20251931325654","analyzedAt":"2026-09-06T14:04:09.491Z","contentChangedAt":"2026-09-06T14:04:09.491Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}