JetBrains/intellij-community · error · IdeScriptException

"Failed to load " + scriptFile

Error message

"Failed to load " + scriptFile

What it means

ExtensionScriptsUtil.evalScript wraps an IOException from loadScript into IdeScriptException('Failed to load ' + scriptFile). The script engine never ran; the .ide script file itself could not be read (missing, unreadable, or wrong path).

Solutions

  1. Verify Files.isRegularFile(scriptFile) and Files.isReadable(scriptFile) before evaluating
  2. Check the path resolves inside the expected scripts directory (avoid relative-path drift after working directory changes)
  3. If the file was intentionally removed, skip evaluation instead of reporting; otherwise restore the file or fix permissions
  4. Report the path from the exception message to pinpoint which script failed

Example fix

// before
Object result = ExtensionScriptsUtil.evalScript(project, engine, scriptFile, true);

// after
if (Files.isRegularFile(scriptFile) && Files.isReadable(scriptFile)) {
  Object result = ExtensionScriptsUtil.evalScript(project, engine, scriptFile, true);
}
Defensive patterns

Strategy: validation

Validate before calling

if (Files.isRegularFile(scriptFile) && Files.isReadable(scriptFile)) {
  Object result = ExtensionScriptsUtil.evalScript(project, engine, scriptFile, true);
}

Try / catch

catch (IdeScriptException e) { if (e.getCause() instanceof IOException) { /* file-level failure: fix path or skip script */ } else { /* script body failure: show engine error */ } }

Prevention

When it happens

Trigger: Calling evalScript(project, engine, scriptFile, ...) where loadScript(project, scriptFile) throws IOException: file deleted between discovery and load, wrong path, permission denied, or unreadable encoding.

Common situations: User-edited .ide scripts in the config directory removed/renamed while the IDE session is running; scripts directory migrated; file locked by another process on Windows; path with invalid characters.

Related errors


AI-assisted analysis of JetBrains/intellij-community@be881553f2 (2026-08-14). Data as JSON: /api/errors/ef6906c9a68e0cd2. Report an issue: GitHub.

Appendix: source

Thrown at grid/core-impl/src/extensions/ExtensionScriptsUtil.java:142

    }
  }

  public static Object evalScript(@Nullable Project project,
                                  @NotNull IdeScriptEngine engine,
                                  @NotNull Path scriptFile) throws IdeScriptException {
    return evalScript(project, engine, scriptFile, true);
  }

  public static Object evalScript(@Nullable Project project,
                                  @NotNull IdeScriptEngine engine,
                                  @NotNull Path scriptFile,
                                  boolean showErrorMessage) throws IdeScriptException {
    try {
      String script = loadScript(project, scriptFile);
      return engine.eval(script);
    }
    catch (IOException e) {
      throw new IdeScriptException("Failed to load " + scriptFile, e);
    }
    catch (IdeScriptException e) {
      ProgressManager.checkCanceled();
      ProcessCanceledException pce = ExceptionUtil.findCause(e, ProcessCanceledException.class);
      if (pce != null) throw pce;
      if (showErrorMessage) {
        showScriptExecutionError(project, scriptFile, ExceptionUtil.getRootCause(e));
      }
      throw e;
    }
  }

  public static void showScriptExecutionError(@Nullable Project project, @NotNull Path scriptFile, @NotNull Throwable error) {
    //noinspection HardCodedStringLiteral
    NotificationGroupManager.getInstance().getNotificationGroup(DataGridNotifications.EXTRACTORS_GROUP_ID)
      .createNotification("<a href=\"generator\">" + scriptFile.getFileName() + "</a>: " + ExceptionUtil.getThrowableText(error, "com.intellij."),
        NotificationType.ERROR)
      .setListener((notification, event) -> navigateToFile(project, scriptFile))

View on GitHub (pinned to be881553f2)