From 8761ef547c05084e539b8c035ffca6e9e72bd596 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 7 Sep 2017 20:43:09 +0100 Subject: [PATCH] Log single message per jar with faulty Class-Path manifest attribute Previously, when DevTools encountered a jar with a Class-Path manifest attribute that referenced non-existent files, it would log one message per entry in the attribute that did not exist. While useful information, this has proven to be too verbose. This commit aims to strike a better balances by logging a single message for an entire jar. The message is a single line that includes the path to the jar with the faulty Class-Path manifest attribute and the paths of all of the files that do not exist that are referenced by the attribute. Closes gh-10111 --- .../boot/devtools/restart/ChangeableUrls.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/ChangeableUrls.java b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/ChangeableUrls.java index 60221d0e224..ed2e090a9aa 100644 --- a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/ChangeableUrls.java +++ b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/ChangeableUrls.java @@ -140,6 +140,7 @@ final class ChangeableUrls implements Iterable { String[] entries = StringUtils.delimitedListToStringArray(classPath, " "); List urls = new ArrayList(entries.length); File parent = new File(jarFile.getName()).getParentFile(); + List nonExistentEntries = new ArrayList(); for (String entry : entries) { try { File referenced = new File(parent, entry); @@ -147,9 +148,7 @@ final class ChangeableUrls implements Iterable { urls.add(referenced.toURI().toURL()); } else { - System.out.println("Ignoring Class-Path entry " + entry + " found in " - + jarFile.getName() + " as " + referenced - + " does not exist"); + nonExistentEntries.add(referenced); } } catch (MalformedURLException ex) { @@ -157,6 +156,11 @@ final class ChangeableUrls implements Iterable { "Class-Path attribute contains malformed URL", ex); } } + if (!nonExistentEntries.isEmpty()) { + System.out.println("The Class-Path manifest attribute in " + jarFile.getName() + + " referenced one or more files that do not exist: " + + StringUtils.collectionToCommaDelimitedString(nonExistentEntries)); + } return urls; }