{"record":{"id":"08780bb96e131208","repo":"GoogleContainerTools/jib","slug":"mainclass-configured-in-projectproperties-getp","errorCode":null,"errorMessage":"'mainClass' configured in ${projectProperties.getPluginName()} is not a valid Java class: ${configuredMainClass}","messagePattern":"'mainClass' configured in (.+?) is not a valid Java class: (.+?)","errorType":"validation","errorClass":"MainClassInferenceException","httpStatus":null,"severity":"error","filePath":"jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/MainClassResolver.java","lineNumber":56,"sourceCode":"   *\n   * <p>Warns if main class provided by {@code projectProperties} is not valid, or throws an error\n   * if no valid main class is found.\n   *\n   * @param configuredMainClass the explicitly configured main class ({@code null} if not\n   *     configured)\n   * @param projectProperties properties containing plugin information and help messages\n   * @return the name of the main class to be used for the container entrypoint\n   * @throws MainClassInferenceException if no valid main class is configured or discovered\n   * @throws IOException if getting the class files from {@code projectProperties} fails\n   */\n  public static String resolveMainClass(\n      @Nullable String configuredMainClass, ProjectProperties projectProperties)\n      throws MainClassInferenceException, IOException {\n    if (configuredMainClass != null) {\n      if (isValidJavaClass(configuredMainClass)) {\n        return configuredMainClass;\n      }\n      throw new MainClassInferenceException(\n          HelpfulSuggestions.forMainClassNotFound(\n              \"'mainClass' configured in \"\n                  + projectProperties.getPluginName()\n                  + \" is not a valid Java class: \"\n                  + configuredMainClass,\n              projectProperties.getPluginName()));\n    }\n\n    projectProperties.log(\n        LogEvent.info(\n            \"Searching for main class... Add a 'mainClass' configuration to '\"\n                + projectProperties.getPluginName()\n                + \"' to improve build speed.\"));\n\n    String mainClassFromJarPlugin = projectProperties.getMainClassFromJarPlugin();\n    if (mainClassFromJarPlugin != null && isValidJavaClass(mainClassFromJarPlugin)) {\n      return mainClassFromJarPlugin;\n    }","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/MainClassResolver.java#L38-L74","documentation":"MainClassInferenceException thrown by MainClassResolver.resolveMainClass() when the explicitly configured mainClass value fails isValidJavaClass(): at least one dot-separated segment is not a valid Java identifier. This is a validation guard on the user-supplied input 'configuredMainClass' — e.g. it contains illegal characters, spaces, or is a path rather than a fully qualified class name — so the entrypoint cannot be built from it.","triggerScenarios":"Thrown at jib-plugins-common/src/main/java/com/google/cloud/tools/jib/plugins/common/MainClassResolver.java:56 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set <mainClass> (Maven) or the jib/mainClass convention (Gradle) to a fully qualified class name like com.example.Main","Remove invalid characters (spaces, slashes, $ quirks) or a file path from the configured value","If the class genuinely exists, confirm the name including package segments is correct"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}