{"record":{"id":"229436ba82791d4d","repo":"apple/pkl","slug":"unresolvedprojectdependency","errorCode":"unresolvedProjectDependency","errorMessage":"unresolvedProjectDependency","messagePattern":"unresolvedProjectDependency","errorType":"error_code","errorClass":"PackageLoadError","httpStatus":null,"severity":"error","filePath":"pkl-core/src/main/java/org/pkl/core/module/ProjectDependenciesManager.java","lineNumber":147,"sourceCode":"          projectFileUri,\n          declaredPackage.getDisplayName(),\n          resolvedDependency.getPackageUri().getDisplayName());\n    }\n  }\n\n  private Map<String, Dependency> doBuildResolvedDependenciesForProject(\n      DeclaredDependencies declaredDeps, ProjectDeps resolvedProjectDeps) {\n    var ret =\n        new HashMap<String, Dependency>(\n            declaredDeps.remoteDependencies().size() + declaredDeps.localDependencies().size());\n    for (var entry : declaredDeps.localDependencies().entrySet()) {\n      var localDeclaredDependencies = entry.getValue();\n      var packageUri = localDeclaredDependencies.myPackageUri();\n      assert packageUri != null;\n      var canonicalPackageUri = CanonicalPackageUri.fromPackageUri(packageUri);\n      var resolvedDep = resolvedProjectDeps.get(canonicalPackageUri);\n      if (resolvedDep == null) {\n        throw new PackageLoadError(\"unresolvedProjectDependency\", packageUri);\n      }\n      checkProjectDependencyOutOfDate(declaredDeps.projectFileUri(), packageUri, resolvedDep);\n      ret.put(entry.getKey(), resolvedDep);\n    }\n    for (var entry : declaredDeps.remoteDependencies().entrySet()) {\n      var remoteDep = entry.getValue();\n      var packageUri = CanonicalPackageUri.fromPackageUri(remoteDep.getPackageUri());\n      var resolvedDep = resolvedProjectDeps.get(packageUri);\n      if (resolvedDep == null) {\n        throw new PackageLoadError(\"unresolvedProjectDependency\", entry.getValue().getPackageUri());\n      }\n      checkProjectDependencyOutOfDate(\n          declaredDeps.projectFileUri(), remoteDep.getPackageUri(), resolvedDep);\n      ret.put(entry.getKey(), resolvedDep);\n    }\n    return ret;\n  }\n","sourceCodeStart":129,"sourceCodeEnd":165,"githubUrl":"https://github.com/apple/pkl/blob/f3efcbfc9b60d30053b0536d664948d7aa1b8673/pkl-core/src/main/java/org/pkl/core/module/ProjectDependenciesManager.java#L129-L165","documentation":"While wiring a project's declared local dependencies to their resolved counterparts, Pkl looks each declared package URI up in the set of resolved project dependencies. If no resolved dependency exists for a declared local dependency's package URI, this PackageLoadError is thrown, indicating PklProject.deps.json is out of date or incomplete.","triggerScenarios":"doBuildResolvedDependenciesForProject (via ensureDependenciesInitialized or resolvedDeps) iterating declaredDeps.localDependencies(): resolvedProjectDeps.get(CanonicalPackageUri.fromPackageUri(packageUri)) returns null for a declared local dependency.","commonSituations":"Adding a new dependency to PklProject without running `pkl project resolve`; corrupted or truncated PklProject.deps.json; package URI typo so the declared URI never matches anything resolved; a transitive project dependency that was never resolved.","solutions":["Run `pkl project resolve` to regenerate PklProject.deps.json with the missing dependency.","Check for typos in the dependency's package URI in PklProject.","Ensure the dependency is also declared/resolvable transitively (the exporting project must declare it).","Delete PklProject.deps.json and re-run `pkl project resolve` if the file is corrupted."],"exampleFix":"# before: dependency added to PklProject but not resolved\n$ pkl project resolve\n# regenerates PklProject.deps.json including the new package","handlingStrategy":"validation","validationCode":"#!/bin/sh\n# before evaluating, ensure every declared dependency is present in the lockfile\npkl project resolve\n# optionally verify nothing changed:\ngit diff --exit-code PklProject.deps.json","typeGuard":null,"tryCatchPattern":"try {\n  depsManager.resolvedDeps();\n} catch (PackageLoadError e) {\n  if (e.getMessage().startsWith(\"Did not find a resolved dependency\")) {\n    throw new BuildException(\"Unresolved dependency; run 'pkl project resolve'\", e);\n  }\n  throw e;\n}","preventionTips":["Run `pkl project resolve` whenever PklProject dependencies change.","Verify package URIs in PklProject for typos before resolving.","Ensure transitive project dependencies are declared by the exporting projects.","Delete and regenerate PklProject.deps.json if it appears corrupt or hand-edited."],"tags":["pkl","dependencies","unresolved-dependency","lockfile"],"backgroundTag":"missing-dependency","analyzedSha":"f3efcbfc9b60d30053b0536d664948d7aa1b8673","analyzedAt":"2026-09-08T13:10:45.570Z","contentChangedAt":"2026-09-08T13:10:45.570Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}