{"record":{"id":"d8c28522f8d67f2f","repo":"apple/pkl","slug":"nopackagedefinedbyproject","errorCode":"noPackageDefinedByProject","errorMessage":"ErrorMessages.create(\"noPackageDefinedByProject\", project.getProjectFileUri())","messagePattern":"ErrorMessages\\.create\\(\"noPackageDefinedByProject\", project\\.getProjectFileUri\\(\\)\\)","errorType":"error_code","errorClass":"PklException","httpStatus":null,"severity":"error","filePath":"pkl-core/src/main/java/org/pkl/core/project/ProjectPackager.java","lineNumber":173,"sourceCode":"      if (packageResult.cacheZipFile() != null) {\n        writeLine(packageResult.cacheZipFile().normalize().toString());\n      }\n      outputWriter.flush();\n    }\n  }\n\n  private Path resolveOutputDirectory(Package pkg) {\n    var substituted =\n        outputPathPattern\n            .replace(\"%{name}\", pkg.name())\n            .replace(\"%{version}\", pkg.version().toString());\n    return workingDir.resolve(substituted);\n  }\n\n  public PackageResult doPackage(Project project) throws IOException {\n    var pkg = project.getPackage();\n    if (pkg == null) {\n      throw new PklException(\n          ErrorMessages.create(\"noPackageDefinedByProject\", project.getProjectFileUri()));\n    }\n    if (packageResults.containsKey(pkg.uri())) {\n      return packageResults.get(pkg.uri());\n    }\n    var files = collectPackageElements(project, pkg);\n    validatePklImportsAndReads(project, files);\n    var outputDir = resolveOutputDirectory(pkg);\n    var metadataFileName = IoUtils.takeLastSegment(pkg.uri().getUri().getPath(), '/');\n    var metadataFile = outputDir.resolve(metadataFileName);\n    var metadataChecksumFile = outputDir.resolve(metadataFileName + \".sha256\");\n    var zipFile = outputDir.resolve(metadataFileName + \".zip\");\n    var zipChecksumFile = outputDir.resolve(metadataFileName + \".zip.sha256\");\n    var zipFileChecksum = createPackageZipAndComputeChecksum(project, files, zipFile);\n    var metadataFileChecksum =\n        createDependencyMetadataAndComputeChecksum(project, pkg, metadataFile, zipFileChecksum);\n    Files.writeString(zipChecksumFile, zipFileChecksum);\n    Files.writeString(metadataChecksumFile, metadataFileChecksum);","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/apple/pkl/blob/f3efcbfc9b60d30053b0536d664948d7aa1b8673/pkl-core/src/main/java/org/pkl/core/project/ProjectPackager.java#L155-L191","documentation":"doPackage() packages the package declared by a project, but this project does not declare one (project.getPackage() returns null because no [package] section exists in PklProject). The error names the project file URI in 'noPackageDefinedByProject'.","triggerScenarios":"Calling ProjectPackager.doPackage(project) on a Project whose PklProject file lacks a package definition.","commonSituations":"Running 'pkl project package' inside a plain project directory that has no [package] block; wrong working directory; expecting packaging to work on library-less projects.","solutions":["Add a [package] section (with name, baseUri, version) to the project's PklProject file","Verify you are operating on the correct project directory that defines a package","Use a different command/flow if the project is not meant to be packaged"],"exampleFix":"// PklProject — before\n// (no package section)\n// after\n[package]\nname = \"my-pkg\"\nbaseUri = \"package://example.com/my-pkg\"\nversion = \"1.0.0\"","handlingStrategy":"validation","validationCode":"if (project.getPackage() == null) throw new IllegalStateException(\"project defines no [package] section: \" + project.getProjectFileUri());","typeGuard":"boolean isPackagable(Project p) { return p.getPackage() != null; }","tryCatchPattern":"try { packager.doPackage(project); } catch (PklException e) { if (e.getMessage().startsWith(\"no package\")) { /* add [package] section or stop packaging */ } }","preventionTips":["Check getPackage() before calling doPackage","Ensure PklProject contains the [package] section before running packaging","Confirm the working directory points at the intended package project"],"tags":["packaging","projects","configuration"],"backgroundTag":"missing-required-config-field","analyzedSha":"f3efcbfc9b60d30053b0536d664948d7aa1b8673","analyzedAt":"2026-09-08T13:10:45.570Z","contentChangedAt":"2026-09-08T13:10:45.570Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}