apple/pkl · error · PklException

e.getMessage()

Error message

e.getMessage()

What it means

IOException, SecurityManagerException, or PackageLoadError thrown while resolving a package's transitive dependencies is rewrapped as a bare PklException whose message is only e.getMessage(). It is a generic wrapper signaling that fetching/parsing dependency metadata for a package failed.

Source

Thrown at pkl-core/src/main/java/org/pkl/core/project/ProjectDependenciesResolver.java:126

        if (!expectedChecksums.getSha256().equals(computedChecksums.getSha256())) {
          throw new PklException(
              ErrorMessages.create(
                  "invalidDeclaredChecksum",
                  packageUri.getDisplayName(),
                  computedChecksums.getSha256(),
                  expectedChecksums.getSha256()));
        }
      }
      var dependencyWithChecksum = new RemoteDependency(packageUri, computedChecksums);
      updateDependency(dependencyWithChecksum);
      EconomicSets.add(alreadyHandledDependencies, packageUri);
      for (var transitiveDependency : metadata.getDependencies().values()) {
        resolveDependenciesOfPackageUri(
            transitiveDependency.getPackageUri().toProjectPackageUri(),
            transitiveDependency.getChecksums());
      }
    } catch (IOException | SecurityManagerException | PackageLoadError e) {
      throw new PklException(e.getMessage(), e);
    }
  }

  private void resolveDependencies(DeclaredDependencies declaredDependencies) {
    var packageUri = declaredDependencies.myPackageUri();
    assert packageUri != null;
    var projectDir = Path.of(declaredDependencies.projectFileUri()).getParent();
    assert projectDir != null;
    var relativePath = IoUtils.relativize(projectDir, this.project.getProjectDir());
    var localDependency = new LocalDependency(packageUri.toProjectPackageUri(), relativePath);
    updateDependency(localDependency);
    buildResolvedDependencies(declaredDependencies);
  }

  private void updateDependency(Dependency dependency) {
    var canonicalPackageUri = CanonicalPackageUri.fromPackageUri(dependency.getPackageUri());
    var currentDependency = resolvedDependencies.get(canonicalPackageUri);
    //noinspection ConstantValue

View on GitHub (pinned to f3efcbfc9b)

Solutions

  1. Read the wrapped cause (e.getCause()) for the real failure and fix that root problem
  2. Check network connectivity / package-server availability and retry
  3. Ensure the SecurityManager allows access to the package's host
  4. Validate that the remote package's metadata is well formed (re-resolve to refresh)
Defensive patterns

Strategy: try-catch

Validate before calling

// check reachability of the package host before resolving
new URI(packageUri).toURL().openConnection().connect();

Try / catch

try { resolver.resolveDependencies(...); } catch (PklException e) { Throwable root = e; while (root.getCause() != null) root = root.getCause(); log.error("dependency resolution failed: {}", root.getMessage()); }

Prevention

When it happens

Trigger: resolveDependenciesOfPackageUri failing during getDependencyMetadataAndComputeChecksum (network/IO problems, security-manager denial, or package load errors) while walking metadata.getDependencies().

Common situations: Offline or proxy-blocked environments; package server returning errors; malformed package metadata on the server; security policies blocking the fetch.

Related errors


AI-assisted analysis of apple/pkl@f3efcbfc9b (2026-09-08). Data as JSON: /api/errors/cf14835bb23c0af9. Report an issue: GitHub.