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 ConstantValueView on GitHub (pinned to f3efcbfc9b)
Solutions
- Read the wrapped cause (e.getCause()) for the real failure and fix that root problem
- Check network connectivity / package-server availability and retry
- Ensure the SecurityManager allows access to the package's host
- 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
- Unwrap getCause() to diagnose the real failure
- Ensure the security manager permits the package hosts
- Handle offline environments with a pre-populated cache
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
- external read failure:
- I/O error generating documentation: $e
- I/O error reading `${path.toUri()}`.
- Error converting property `%s` in Pkl object of type `%s` to
- ioErrorLoadingModule
AI-assisted analysis of apple/pkl@f3efcbfc9b (2026-09-08).
Data as JSON: /api/errors/cf14835bb23c0af9.
Report an issue: GitHub.