Why doesn't it work? ... 1) is works, but 2) occurs DateTimeParseException.
# 1
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMddHHmmss.SSS");
LocalDateTime dt1 = LocalDateTime.parse("20211211134321.221", formatter1);
# 2
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
LocalDateTime dt = LocalDateTime.parse("20211211134321221", formatter);
Per the comments, it seems that such code runs successfully in some earlier versions of Java 8 but fails in other later versions of Java 8.
Apparently due to a bug, JDK-8031085, fixed in Java 9+.
Here is my reformatted version of your code.
DateTimeFormatter fx = DateTimeFormatter.ofPattern( "yyyyMMddHHmmss.SSS" );
LocalDateTime x = LocalDateTime.parse( "20211211134321.221" , fx );
System.out.println( "x = " + x ) ;
DateTimeFormatter fy = DateTimeFormatter.ofPattern( "yyyyMMddHHmmssSSS" );
LocalDateTime y = LocalDateTime.parse( "20211211134321221" , fy );
System.out.println( "y = " + y ) ;
When run in Java 12, as seen on IdeOne.com.
x = 2021-12-11T13:43:21.221
y = 2021-12-11T13:43:21.221