apple/pkl · error · PklException
noPackageDefinedByProject
noPackageDefinedByProject
Error message
ErrorMessages.create("noPackageDefinedByProject", project.getProjectFileUri()) What it means
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'.
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
Example fix
// PklProject — before // (no package section) // after [package] name = "my-pkg" baseUri = "package://example.com/my-pkg" version = "1.0.0"
Defensive patterns
Strategy: validation
Validate before calling
if (project.getPackage() == null) throw new IllegalStateException("project defines no [package] section: " + project.getProjectFileUri()); Type guard
boolean isPackagable(Project p) { return p.getPackage() != null; } Try / catch
try { packager.doPackage(project); } catch (PklException e) { if (e.getMessage().startsWith("no package")) { /* add [package] section or stop packaging */ } } Prevention
- Check getPackage() before calling doPackage
- Ensure PklProject contains the [package] section before running packaging
- Confirm the working directory points at the intended package project
When it happens
Trigger: Calling ProjectPackager.doPackage(project) on a Project whose PklProject file lacks a package definition.
Common situations: 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.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- cannotInstallPackageWithNoCache
- cannotFindCertFile
- Could not find a source set for code generator
- emptyCertFile
- externalReaderDoesNotSupportScheme
AI-assisted analysis of apple/pkl@f3efcbfc9b (2026-09-08).
Data as JSON: /api/errors/d8c28522f8d67f2f.
Report an issue: GitHub.
Appendix: source
Thrown at pkl-core/src/main/java/org/pkl/core/project/ProjectPackager.java:173
if (packageResult.cacheZipFile() != null) {
writeLine(packageResult.cacheZipFile().normalize().toString());
}
outputWriter.flush();
}
}
private Path resolveOutputDirectory(Package pkg) {
var substituted =
outputPathPattern
.replace("%{name}", pkg.name())
.replace("%{version}", pkg.version().toString());
return workingDir.resolve(substituted);
}
public PackageResult doPackage(Project project) throws IOException {
var pkg = project.getPackage();
if (pkg == null) {
throw new PklException(
ErrorMessages.create("noPackageDefinedByProject", project.getProjectFileUri()));
}
if (packageResults.containsKey(pkg.uri())) {
return packageResults.get(pkg.uri());
}
var files = collectPackageElements(project, pkg);
validatePklImportsAndReads(project, files);
var outputDir = resolveOutputDirectory(pkg);
var metadataFileName = IoUtils.takeLastSegment(pkg.uri().getUri().getPath(), '/');
var metadataFile = outputDir.resolve(metadataFileName);
var metadataChecksumFile = outputDir.resolve(metadataFileName + ".sha256");
var zipFile = outputDir.resolve(metadataFileName + ".zip");
var zipChecksumFile = outputDir.resolve(metadataFileName + ".zip.sha256");
var zipFileChecksum = createPackageZipAndComputeChecksum(project, files, zipFile);
var metadataFileChecksum =
createDependencyMetadataAndComputeChecksum(project, pkg, metadataFile, zipFileChecksum);
Files.writeString(zipChecksumFile, zipFileChecksum);
Files.writeString(metadataChecksumFile, metadataFileChecksum);View on GitHub (pinned to f3efcbfc9b)