This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/2.x by this push:
     new 73733dadf4 Remove the `com.github.spotbugs:spotbugs-annotations` 
dependency (#3984, #3985)
73733dadf4 is described below

commit 73733dadf4250ad6bd683f99474266d18c6b6c35
Author: Vladimir Sitnikov <[email protected]>
AuthorDate: Wed Nov 26 01:25:09 2025 +0500

    Remove the `com.github.spotbugs:spotbugs-annotations` dependency (#3984, 
#3985)
    
    Co-authored-by: Volkan Yazıcı <[email protected]>
---
 .github/dependabot.yaml                             |  3 ---
 .../org/apache/log4j/DefaultThrowableRenderer.java  |  2 +-
 .../main/java/org/apache/log4j/FileAppender.java    |  2 +-
 .../src/main/java/org/apache/log4j/Hierarchy.java   |  2 +-
 .../java/org/apache/log4j/PropertyConfigurator.java |  2 +-
 .../java/org/apache/log4j/RollingFileAppender.java  |  2 +-
 .../java/org/apache/log4j/helpers/FileWatchdog.java |  2 +-
 .../org/apache/log4j/helpers/UtilLoggingLevel.java  |  2 +-
 .../java/org/apache/log4j/helpers/package-info.java |  2 +-
 .../internal/annotation/SuppressFBWarnings.java     | 21 ++++++++++++++-------
 .../org/apache/log4j/layout/Log4j1XmlLayout.java    |  2 +-
 .../main/java/org/apache/log4j/package-info.java    |  2 +-
 .../java/org/apache/log4j/xml/DOMConfigurator.java  |  2 +-
 .../java/org/apache/log4j/xml/XmlConfiguration.java |  2 +-
 .../java/org/apache/log4j/xml/package-info.java     |  2 +-
 .../org/apache/logging/log4j/test/TestLogger.java   |  2 +-
 .../internal/annotation/SuppressFBWarnings.java     | 21 ++++++++++++++-------
 .../logging/log4j/test/junit/DirectoryCleaner.java  |  2 +-
 .../logging/log4j/test/junit/FileCleaner.java       |  2 +-
 .../apache/logging/log4j/test/junit/SerialUtil.java |  2 +-
 .../logging/log4j/test/junit/package-info.java      |  2 +-
 .../org/apache/logging/log4j/test/package-info.java |  2 +-
 .../logging/log4j/status/StatusLoggerDateTest.java  |  2 +-
 .../internal/annotation/SuppressFBWarnings.java     | 21 ++++++++++++++-------
 .../apache/logging/log4j/simple/SimpleLogger.java   |  2 +-
 .../logging/log4j/simple/SimpleLoggerContext.java   |  2 +-
 .../apache/logging/log4j/simple/package-info.java   |  2 +-
 .../logging/log4j/status/StatusConsoleListener.java |  2 +-
 .../org/apache/logging/log4j/status/StatusData.java |  4 ++--
 .../apache/logging/log4j/status/StatusLogger.java   |  4 ++--
 .../apache/logging/log4j/status/package-info.java   |  2 +-
 .../log4j/util/PropertyFilePropertySource.java      |  2 +-
 .../org/apache/logging/log4j/util/ProviderUtil.java |  2 +-
 .../log4j/util/internal/SerializationUtil.java      |  2 +-
 .../org/apache/logging/log4j/util/package-info.java |  2 +-
 .../internal/annotation/SuppressFBWarnings.java     | 21 ++++++++++++++-------
 .../logging/log4j/appserver/jetty/Log4j2Logger.java |  2 +-
 .../logging/log4j/appserver/jetty/package-info.java |  2 +-
 .../log4j/appserver/tomcat/TomcatLogger.java        |  2 +-
 .../log4j/appserver/tomcat/package-info.java        |  2 +-
 .../log4j/core/test/AvailablePortFinder.java        |  2 +-
 .../log4j/core/test/GcFreeLoggingTestUtil.java      |  2 +-
 .../test/appender/db/jdbc/JdbcH2TestHelper.java     |  2 +-
 .../core/test/appender/db/jdbc/package-info.java    |  2 +-
 .../internal/annotation/SuppressFBWarnings.java     | 21 ++++++++++++++-------
 .../test/junit/AbstractExternalFileCleaner.java     |  2 +-
 .../logging/log4j/core/test/junit/JdbcRule.java     |  2 +-
 .../logging/log4j/core/test/junit/package-info.java |  2 +-
 .../core/test/net/mock/MockTcpSyslogServer.java     |  2 +-
 .../log4j/core/test/net/mock/package-info.java      |  2 +-
 .../log4j/core/test/net/ssl/TlsSyslogTestUtil.java  |  2 +-
 .../log4j/core/test/net/ssl/package-info.java       |  2 +-
 .../logging/log4j/core/test/package-info.java       |  2 +-
 .../log4j/core/test/smtp/SimpleSmtpServer.java      |  2 +-
 .../logging/log4j/core/test/smtp/package-info.java  |  2 +-
 .../core/appender/SocketAppenderReconnectTest.java  |  2 +-
 .../core/config/xml/XmlConfigurationPropsTest.java  |  2 +-
 .../apache/logging/log4j/core/LoggerContext.java    |  2 +-
 .../logging/log4j/core/appender/FileManager.java    |  2 +-
 .../core/appender/HttpURLConnectionManager.java     |  2 +-
 .../core/appender/db/jdbc/JdbcDatabaseManager.java  |  2 +-
 .../log4j/core/appender/db/jdbc/package-info.java   |  2 +-
 .../appender/rolling/AbstractRolloverStrategy.java  |  2 +-
 .../appender/rolling/DefaultRolloverStrategy.java   |  2 +-
 .../rolling/DirectWriteRolloverStrategy.java        |  2 +-
 .../log4j/core/appender/rolling/FileExtension.java  |  2 +-
 .../core/appender/rolling/RollingFileManager.java   |  2 +-
 .../rolling/RollingRandomAccessFileManager.java     |  2 +-
 .../appender/rolling/TimeBasedTriggeringPolicy.java |  2 +-
 .../appender/rolling/action/AbstractPathAction.java |  2 +-
 .../appender/rolling/action/FileRenameAction.java   |  2 +-
 .../rolling/action/PosixViewAttributeAction.java    |  2 +-
 .../logging/log4j/core/async/AsyncLoggerConfig.java |  2 +-
 .../log4j/core/config/ConfigurationSource.java      |  2 +-
 .../builder/impl/DefaultConfigurationBuilder.java   |  2 +-
 .../core/config/builder/impl/package-info.java      |  2 +-
 .../core/config/plugins/convert/TypeConverters.java |  2 +-
 .../core/config/plugins/convert/package-info.java   |  2 +-
 .../core/config/plugins/util/ResolverUtil.java      |  2 +-
 .../core/config/plugins/util/package-info.java      |  2 +-
 .../core/config/status/StatusConfiguration.java     |  2 +-
 .../log4j/core/config/status/package-info.java      |  2 +-
 .../log4j/core/config/xml/XmlConfiguration.java     |  2 +-
 .../core/filter/MutableThreadContextMapFilter.java  |  2 +-
 .../logging/log4j/core/filter/package-info.java     |  2 +-
 .../internal/annotation/SuppressFBWarnings.java     | 21 ++++++++++++++-------
 .../logging/log4j/core/jmx/LoggerContextAdmin.java  |  2 +-
 .../apache/logging/log4j/core/jmx/package-info.java |  2 +-
 .../logging/log4j/core/layout/GelfLayout.java       |  2 +-
 .../logging/log4j/core/layout/HtmlLayout.java       |  2 +-
 .../logging/log4j/core/lookup/MainMapLookup.java    |  2 +-
 .../apache/logging/log4j/core/net/JndiManager.java  |  2 +-
 .../apache/logging/log4j/core/net/SmtpManager.java  |  2 +-
 .../logging/log4j/core/net/TcpSocketManager.java    |  2 +-
 .../log4j/core/net/UrlConnectionFactory.java        |  2 +-
 .../apache/logging/log4j/core/net/package-info.java |  2 +-
 .../log4j/core/net/ssl/FilePasswordProvider.java    |  2 +-
 .../log4j/core/net/ssl/LaxHostnameVerifier.java     |  2 +-
 .../logging/log4j/core/net/ssl/package-info.java    |  2 +-
 .../org/apache/logging/log4j/core/package-info.java |  2 +-
 .../logging/log4j/core/script/ScriptFile.java       |  2 +-
 .../apache/logging/log4j/core/tools/Generate.java   |  2 +-
 .../logging/log4j/core/tools/package-info.java      |  2 +-
 .../log4j/core/tools/picocli/CommandLine.java       |  2 +-
 .../apache/logging/log4j/core/util/FileUtils.java   |  2 +-
 .../apache/logging/log4j/core/util/NameUtil.java    |  2 +-
 .../apache/logging/log4j/core/util/NetUtils.java    |  2 +-
 .../org/apache/logging/log4j/core/util/Source.java  |  2 +-
 .../apache/logging/log4j/core/util/Throwables.java  |  2 +-
 .../logging/log4j/core/util/package-info.java       |  2 +-
 .../logging/log4j/jul/Log4jBridgeHandler.java       |  2 +-
 .../jul/internal/annotation/SuppressFBWarnings.java | 21 ++++++++++++++-------
 .../org/apache/logging/log4j/jul/package-info.java  |  2 +-
 .../annotation/SuppressFBWarnings.java}             | 21 ++++++++++++++-------
 .../log4j/layout/template/json/util/Uris.java       |  2 +-
 .../layout/template/json/util/package-info.java     |  2 +-
 log4j-parent/pom.xml                                | 15 ---------------
 .../internal/annotation/SuppressFBWarnings.java     | 21 ++++++++++++++-------
 .../log4j/perf/jmh/JdbcAppenderBenchmark.java       |  2 +-
 .../log4j/perf/jmh/JpaAppenderBenchmark.java        |  2 +-
 .../.2.x.x/3985_remove_spotbugs_annotations.xml     | 13 +++++++++++++
 121 files changed, 250 insertions(+), 192 deletions(-)

diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index 5e7fa1e63c..6c73c48d8d 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -90,9 +90,6 @@ updates:
     registries:
       - maven-central
     ignore:
-      # `com.github.spotbugs:spotbugs-annotations:4.9.0` and onwards require 
Java 11
-      - dependency-name: "com.github.spotbugs:spotbugs-annotations"
-        versions: [ "[4.9.0,)" ]
       # Jetty 10.x does not have an internal logging API
       - dependency-name: "org.eclipse.jetty:*"
         versions: [ "[10,)" ]
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/DefaultThrowableRenderer.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/DefaultThrowableRenderer.java
index 79129edbb3..0c84d3d0ce 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/DefaultThrowableRenderer.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/DefaultThrowableRenderer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.log4j;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InterruptedIOException;
 import java.io.LineNumberReader;
@@ -24,6 +23,7 @@ import java.io.PrintWriter;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.ArrayList;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.log4j.spi.ThrowableRenderer;
 
 /**
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/FileAppender.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/FileAppender.java
index 25b6edf77d..69996e7da4 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/FileAppender.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/FileAppender.java
@@ -16,7 +16,6 @@
  */
 package org.apache.log4j;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -26,6 +25,7 @@ import java.io.InterruptedIOException;
 import java.io.Writer;
 import org.apache.log4j.helpers.LogLog;
 import org.apache.log4j.helpers.QuietWriter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.log4j.spi.ErrorCode;
 
 /**
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/Hierarchy.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/Hierarchy.java
index 850ea52bd6..d147155867 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/Hierarchy.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/Hierarchy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.log4j;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Vector;
@@ -25,6 +24,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import org.apache.log4j.helpers.LogLog;
 import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.log4j.legacy.core.ContextUtil;
 import org.apache.log4j.or.ObjectRenderer;
 import org.apache.log4j.or.RendererMap;
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/PropertyConfigurator.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/PropertyConfigurator.java
index 647b86e5b9..9892109b9b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/PropertyConfigurator.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/PropertyConfigurator.java
@@ -16,7 +16,6 @@
  */
 package org.apache.log4j;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InterruptedIOException;
@@ -37,6 +36,7 @@ import org.apache.log4j.config.PropertySetter;
 import org.apache.log4j.helpers.FileWatchdog;
 import org.apache.log4j.helpers.LogLog;
 import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.log4j.or.RendererMap;
 import org.apache.log4j.spi.Configurator;
 import org.apache.log4j.spi.ErrorHandler;
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/RollingFileAppender.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/RollingFileAppender.java
index ce03ec2bc8..315ff108d7 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/RollingFileAppender.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/RollingFileAppender.java
@@ -16,7 +16,6 @@
  */
 package org.apache.log4j;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.io.InterruptedIOException;
@@ -24,6 +23,7 @@ import java.io.Writer;
 import org.apache.log4j.helpers.CountingQuietWriter;
 import org.apache.log4j.helpers.LogLog;
 import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.log4j.spi.LoggingEvent;
 
 /**
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/FileWatchdog.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/FileWatchdog.java
index ecf686faf4..a7c9846b2b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/FileWatchdog.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/FileWatchdog.java
@@ -16,8 +16,8 @@
  */
 package org.apache.log4j.helpers;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 
 /**
  * Checks every now and then that a certain file has not changed. If it has, 
then call the {@link #doOnChange} method.
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java
index f99ad0b8c7..5e64f0c813 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java
@@ -18,10 +18,10 @@ package org.apache.log4j.helpers;
 
 import static org.apache.logging.log4j.util.Strings.toRootUpperCase;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.log4j.Level;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 
 /**
  * An extension of the Level class that provides support for java.util.logging 
Levels.
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/package-info.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/package-info.java
index b94af3ba61..a6e54fdb7b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/package-info.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/package-info.java
@@ -18,7 +18,7 @@
  * Log4j 1.x compatibility layer.
  */
 @Export
-@Version("2.20.3")
+@Version("2.26.0")
 package org.apache.log4j.helpers;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-1.2-api/src/main/java/org/apache/log4j/internal/annotation/SuppressFBWarnings.java
similarity index 70%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-1.2-api/src/main/java/org/apache/log4j/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..25809ea12d 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-1.2-api/src/main/java/org/apache/log4j/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.log4j.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java
index a508218b11..ed7ff047ae 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java
@@ -16,12 +16,12 @@
  */
 package org.apache.log4j.layout;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Objects;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Node;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/package-info.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/package-info.java
index 7462396fa7..e8b2323477 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/package-info.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/package-info.java
@@ -18,7 +18,7 @@
  * Log4j 1.x compatibility layer.
  */
 @Export
-@Version("2.20.2")
+@Version("2.26.0")
 package org.apache.log4j;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/DOMConfigurator.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/DOMConfigurator.java
index 5aff69da56..17e904d08c 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/DOMConfigurator.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/DOMConfigurator.java
@@ -16,7 +16,6 @@
  */
 package org.apache.log4j.xml;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -34,6 +33,7 @@ import org.apache.log4j.LogManager;
 import org.apache.log4j.config.PropertySetter;
 import org.apache.log4j.helpers.LogLog;
 import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.log4j.spi.LoggerRepository;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configuration;
diff --git 
a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java
index dd2a0312b0..a4e7916139 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java
@@ -16,7 +16,6 @@
  */
 package org.apache.log4j.xml;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InterruptedIOException;
 import java.util.HashMap;
@@ -36,6 +35,7 @@ import org.apache.log4j.bridge.FilterAdapter;
 import org.apache.log4j.config.Log4j1Configuration;
 import org.apache.log4j.config.PropertySetter;
 import org.apache.log4j.helpers.OptionConverter;
+import org.apache.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.log4j.rewrite.RewritePolicy;
 import org.apache.log4j.spi.AppenderAttachable;
 import org.apache.log4j.spi.ErrorHandler;
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/package-info.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/package-info.java
index b7c3d31598..947cfd6965 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/package-info.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/package-info.java
@@ -18,7 +18,7 @@
  * Log4j 1.x compatibility layer.
  */
 @Export
-@Version("2.20.2")
+@Version("2.26.0")
 package org.apache.log4j.xml;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/TestLogger.java 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/TestLogger.java
index e95f1e9bb6..3dd4278ec2 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/TestLogger.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/TestLogger.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.test;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.util.ArrayList;
@@ -28,6 +27,7 @@ import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.MessageFactory;
 import org.apache.logging.log4j.spi.AbstractLogger;
+import org.apache.logging.log4j.test.internal.annotation.SuppressFBWarnings;
 
 /**
  *
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-api-test/src/main/java/org/apache/logging/log4j/test/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..ced8d09001 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.test.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/DirectoryCleaner.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/DirectoryCleaner.java
index 84c12b4210..efcd29753d 100644
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/DirectoryCleaner.java
+++ 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/DirectoryCleaner.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.test.junit;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.nio.file.FileVisitResult;
 import java.nio.file.Files;
@@ -26,6 +25,7 @@ import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Collection;
 import java.util.HashSet;
+import org.apache.logging.log4j.test.internal.annotation.SuppressFBWarnings;
 import org.junit.jupiter.api.extension.ExtensionContext;
 
 class DirectoryCleaner extends AbstractFileCleaner {
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/FileCleaner.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/FileCleaner.java
index 9a9500d53a..bf49a7ea51 100644
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/FileCleaner.java
+++ 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/FileCleaner.java
@@ -16,13 +16,13 @@
  */
 package org.apache.logging.log4j.test.junit;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Collection;
 import java.util.HashSet;
+import org.apache.logging.log4j.test.internal.annotation.SuppressFBWarnings;
 import org.junit.jupiter.api.extension.ExtensionContext;
 
 class FileCleaner extends AbstractFileCleaner {
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/SerialUtil.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/SerialUtil.java
index e568e41513..707fee87d3 100644
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/SerialUtil.java
+++ 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/SerialUtil.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.test.junit;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -25,6 +24,7 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
+import org.apache.logging.log4j.test.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.util.Constants;
 import org.apache.logging.log4j.util.FilteredObjectInputStream;
 
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/package-info.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/package-info.java
index 2a37b2933f..ca324bf73a 100644
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/package-info.java
+++ 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the license.
  */
 @Export
-@Version("2.24.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.test.junit;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/package-info.java 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/package-info.java
index 5a0ebc4510..36413766c5 100644
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/package-info.java
+++ 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the license.
  */
 @Export
-@Version("2.21.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.test;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusLoggerDateTest.java
 
b/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusLoggerDateTest.java
index 0978587692..55cd157783 100644
--- 
a/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusLoggerDateTest.java
+++ 
b/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusLoggerDateTest.java
@@ -18,11 +18,11 @@ package org.apache.logging.log4j.status;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import edu.umd.cs.findbugs.annotations.Nullable;
 import java.time.Instant;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.Properties;
+import org.jspecify.annotations.Nullable;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource;
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/internal/annotation/SuppressFBWarnings.java
similarity index 70%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-api/src/main/java/org/apache/logging/log4j/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..2023a4cb06 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java
index 1690893187..4d36201e9e 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLogger.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.simple;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.PrintStream;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -25,6 +24,7 @@ import java.util.Map;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.MessageFactory;
 import org.apache.logging.log4j.spi.AbstractLogger;
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
index 55cced06f5..3286bb356d 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
@@ -16,9 +16,9 @@
  */
 package org.apache.logging.log4j.simple;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.PrintStream;
 import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.message.MessageFactory;
 import org.apache.logging.log4j.message.ParameterizedMessageFactory;
 import org.apache.logging.log4j.simple.internal.SimpleProvider;
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/simple/package-info.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/simple/package-info.java
index 29139a12ac..3e5667856f 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/simple/package-info.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/simple/package-info.java
@@ -20,7 +20,7 @@
  * Providers are able to be loaded at runtime.
  */
 @Export
-@Version("2.24.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.simple;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
index ce23ff5aa9..7e7b2b2c92 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java
@@ -18,13 +18,13 @@ package org.apache.logging.log4j.status;
 
 import static java.util.Objects.requireNonNull;
 
-import edu.umd.cs.findbugs.annotations.Nullable;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 import org.apache.logging.log4j.Level;
+import org.jspecify.annotations.Nullable;
 
 /**
  * A {@link StatusListener} that writes to the console.
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
index 1b0dcf31de..7cef97d94c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusData.java
@@ -19,15 +19,15 @@ package org.apache.logging.log4j.status;
 import static java.util.Objects.requireNonNull;
 import static org.apache.logging.log4j.util.Chars.SPACE;
 
-import edu.umd.cs.findbugs.annotations.Nullable;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.io.Serializable;
 import java.time.Instant;
 import java.time.format.DateTimeFormatter;
 import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.message.Message;
+import org.jspecify.annotations.Nullable;
 
 /**
  * The Status data.
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
index 699dc66c8a..06d8a547b0 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
@@ -18,8 +18,6 @@ package org.apache.logging.log4j.status;
 
 import static java.util.Objects.requireNonNull;
 
-import edu.umd.cs.findbugs.annotations.Nullable;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
@@ -41,11 +39,13 @@ import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.MessageFactory;
 import org.apache.logging.log4j.message.ParameterizedNoReferenceMessageFactory;
 import org.apache.logging.log4j.spi.AbstractLogger;
 import org.apache.logging.log4j.util.Constants;
+import org.jspecify.annotations.Nullable;
 
 /**
  * Records events that occur in the logging system.
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/status/package-info.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/status/package-info.java
index 12fddb6039..25274a7b23 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/status/package-info.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/package-info.java
@@ -19,7 +19,7 @@
  * used by applications reporting on the status of the logging system
  */
 @Export
-@Version("2.23.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.status;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertyFilePropertySource.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertyFilePropertySource.java
index acb4310c3c..4c665879ba 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertyFilePropertySource.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertyFilePropertySource.java
@@ -16,12 +16,12 @@
  */
 package org.apache.logging.log4j.util;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.util.Properties;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.status.StatusLogger;
 
 /**
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java
index 2b74606f08..d66c35c34c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/ProviderUtil.java
@@ -21,7 +21,6 @@ import static 
org.apache.logging.log4j.spi.Provider.PROVIDER_PROPERTY_NAME;
 import aQute.bnd.annotation.Cardinality;
 import aQute.bnd.annotation.Resolution;
 import aQute.bnd.annotation.spi.ServiceConsumer;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.net.URL;
 import java.util.Collection;
@@ -35,6 +34,7 @@ import java.util.concurrent.locks.ReentrantLock;
 import java.util.stream.Collectors;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.simple.internal.SimpleProvider;
 import org.apache.logging.log4j.spi.LoggerContextFactory;
 import org.apache.logging.log4j.spi.Provider;
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/internal/SerializationUtil.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/internal/SerializationUtil.java
index 6180f47421..3cb7066898 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/internal/SerializationUtil.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/internal/SerializationUtil.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.util.internal;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -29,6 +28,7 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.Arrays;
 import java.util.List;
+import org.apache.logging.log4j.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.FilteredObjectInputStream;
 
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/package-info.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/package-info.java
index 23fcfbd931..f20d42965c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/package-info.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/package-info.java
@@ -20,7 +20,7 @@
  * There are no guarantees for binary or logical compatibility in this package.
  */
 @Export
-@Version("2.25.0")
+@Version("2.26.0")
 package org.apache.logging.log4j.util;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..480ad32607 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.appserver.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java
 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java
index 70b9344328..b520c04f5b 100644
--- 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java
+++ 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java
@@ -16,9 +16,9 @@
  */
 package org.apache.logging.log4j.appserver.jetty;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
+import 
org.apache.logging.log4j.appserver.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.spi.ExtendedLogger;
 import org.apache.logging.log4j.spi.LoggerContext;
 import org.eclipse.jetty.util.log.AbstractLogger;
diff --git 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/package-info.java
 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/package-info.java
index 41b7bce811..d4e606ba46 100644
--- 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/package-info.java
+++ 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/jetty/package-info.java
@@ -19,7 +19,7 @@
  */
 @Open
 @Export
-@Version("2.20.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.appserver.jetty;
 
 import aQute.bnd.annotation.jpms.Open;
diff --git 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
index 11817c6618..2176acc494 100644
--- 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
+++ 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
@@ -18,13 +18,13 @@ package org.apache.logging.log4j.appserver.tomcat;
 
 import aQute.bnd.annotation.Resolution;
 import aQute.bnd.annotation.spi.ServiceProvider;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import org.apache.juli.logging.Log;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
+import 
org.apache.logging.log4j.appserver.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.spi.ExtendedLogger;
 import org.apache.logging.log4j.spi.LoggerContext;
 
diff --git 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
index d8d724f4eb..0a84c1f708 100644
--- 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
+++ 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
@@ -18,7 +18,7 @@
  * Log4j integration with Apache Tomcat 8.5 or greater.
  */
 @Export
-@Version("2.20.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.appserver.tomcat;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/AvailablePortFinder.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/AvailablePortFinder.java
index ffd7d0b276..8758a6e0bb 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/AvailablePortFinder.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/AvailablePortFinder.java
@@ -16,13 +16,13 @@
  */
 package org.apache.logging.log4j.core.test;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.net.DatagramSocket;
 import java.net.ServerSocket;
 import java.util.NoSuchElementException;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.logging.log4j.Logger;
+import 
org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.status.StatusLogger;
 
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/GcFreeLoggingTestUtil.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/GcFreeLoggingTestUtil.java
index ace4185467..a299334b05 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/GcFreeLoggingTestUtil.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/GcFreeLoggingTestUtil.java
@@ -21,7 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import com.google.monitoring.runtime.instrumentation.AllocationRecorder;
 import com.google.monitoring.runtime.instrumentation.Sampler;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.net.URL;
 import java.nio.charset.Charset;
@@ -35,6 +34,7 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.MarkerManager;
 import org.apache.logging.log4j.ThreadContext;
+import 
org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.message.StringMapMessage;
 
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/JdbcH2TestHelper.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/JdbcH2TestHelper.java
index 95ee5330ca..e8dcc9fa60 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/JdbcH2TestHelper.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/JdbcH2TestHelper.java
@@ -16,13 +16,13 @@
  */
 package org.apache.logging.log4j.core.test.appender.db.jdbc;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import org.apache.logging.log4j.core.appender.db.jdbc.AbstractConnectionSource;
 import org.apache.logging.log4j.core.appender.db.jdbc.ConnectionSource;
+import 
org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
 
 @SuppressFBWarnings("HARD_CODE_PASSWORD")
 public class JdbcH2TestHelper {
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/package-info.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/package-info.java
index 638390f63a..b49536fd02 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/package-info.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/appender/db/jdbc/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the license.
  */
 @Export
-@Version("2.20.3")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.test.appender.db.jdbc;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..c30fd886e4 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.core.test.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/AbstractExternalFileCleaner.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/AbstractExternalFileCleaner.java
index 4477b55da7..9fa720e66e 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/AbstractExternalFileCleaner.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/AbstractExternalFileCleaner.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.test.junit;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintStream;
@@ -28,6 +27,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import 
org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
 import org.junit.Assert;
 import org.junit.rules.ExternalResource;
 
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/JdbcRule.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/JdbcRule.java
index d6f76b4fa2..76065470d5 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/JdbcRule.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/JdbcRule.java
@@ -16,13 +16,13 @@
  */
 package org.apache.logging.log4j.core.test.junit;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.Objects;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.core.appender.db.jdbc.ConnectionSource;
+import 
org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
 
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/package-info.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/package-info.java
index 4103b14804..a92fa4c345 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/package-info.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/package-info.java
@@ -20,7 +20,7 @@
  * @see org.junit.rules.TestRule
  */
 @Export
-@Version("2.23.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.test.junit;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/MockTcpSyslogServer.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/MockTcpSyslogServer.java
index 7fecbe9ef8..87a8703047 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/MockTcpSyslogServer.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/MockTcpSyslogServer.java
@@ -16,11 +16,11 @@
  */
 package org.apache.logging.log4j.core.test.net.mock;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.ServerSocket;
 import java.net.Socket;
+import 
org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
 
 public class MockTcpSyslogServer extends MockSyslogServer {
     private final ServerSocket serverSocket;
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/package-info.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/package-info.java
index 466921018d..a7501fb3cd 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/package-info.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/mock/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the license.
  */
 @Export
-@Version("2.21.0")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.test.net.mock;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/TlsSyslogTestUtil.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/TlsSyslogTestUtil.java
index bb3b7691b6..a67aa3d7a9 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/TlsSyslogTestUtil.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/TlsSyslogTestUtil.java
@@ -16,9 +16,9 @@
  */
 package org.apache.logging.log4j.core.test.net.ssl;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
 import java.util.Random;
+import 
org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
 
 @SuppressFBWarnings("PREDICTABLE_RANDOM")
 public class TlsSyslogTestUtil {
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/package-info.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/package-info.java
index 97a787665d..734cd0dc60 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/package-info.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/net/ssl/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the license.
  */
 @Export
-@Version("2.20.2")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.test.net.ssl;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/package-info.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/package-info.java
index 2199930f31..70fbbc2b6f 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/package-info.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the license.
  */
 @Export
-@Version("2.25.0")
+@Version("2.26.0")
 @BaselineIgnore("2.25.0")
 package org.apache.logging.log4j.core.test;
 
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/SimpleSmtpServer.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/SimpleSmtpServer.java
index c02b115d22..42f3b05eac 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/SimpleSmtpServer.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/SimpleSmtpServer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.test.smtp;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -26,6 +25,7 @@ import java.net.Socket;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import 
org.apache.logging.log4j.core.test.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.util.Strings;
 
 /**
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/package-info.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/package-info.java
index 3d4e74b7a9..8b7122660a 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/package-info.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/smtp/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the license.
  */
 @Export
-@Version("2.20.2")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.test.smtp;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderReconnectTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderReconnectTest.java
index 619749eacf..ebba3ba42f 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderReconnectTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderReconnectTest.java
@@ -21,7 +21,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.awaitility.Awaitility.await;
 import static org.junit.jupiter.api.Assertions.fail;
 
-import edu.umd.cs.findbugs.annotations.Nullable;
 import java.net.InetSocketAddress;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -48,6 +47,7 @@ import 
org.apache.logging.log4j.core.net.TcpSocketManager.HostResolver;
 import org.apache.logging.log4j.core.net.ssl.SslKeyStoreConstants;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.test.junit.UsingStatusListener;
+import org.jspecify.annotations.Nullable;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.CleanupMode;
 import org.junit.jupiter.api.io.TempDir;
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
index 3437f787b8..d421d58c3a 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlConfigurationPropsTest.java
@@ -22,7 +22,6 @@ import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
-import edu.umd.cs.findbugs.annotations.Nullable;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
@@ -31,6 +30,7 @@ import org.apache.logging.log4j.status.StatusConsoleListener;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.test.junit.SetTestProperty;
 import org.apache.logging.log4j.test.junit.UsingStatusLoggerMock;
+import org.jspecify.annotations.Nullable;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.junit.jupiter.MockitoExtension;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index 6db471cb87..da62cc2485 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -19,7 +19,6 @@ package org.apache.logging.log4j.core;
 import static org.apache.logging.log4j.core.jmx.internal.JmxUtil.isJmxDisabled;
 import static 
org.apache.logging.log4j.core.util.ShutdownCallbackRegistry.SHUTDOWN_HOOK_MARKER;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.io.File;
@@ -42,6 +41,7 @@ import 
org.apache.logging.log4j.core.config.DefaultConfiguration;
 import org.apache.logging.log4j.core.config.NullConfiguration;
 import org.apache.logging.log4j.core.config.Reconfigurable;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.jmx.Server;
 import org.apache.logging.log4j.core.util.Cancellable;
 import org.apache.logging.log4j.core.util.Constants;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
index 75f933790d..85d3c8da83 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -42,6 +41,7 @@ import java.util.Set;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.core.util.FileUtils;
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
index 6a49f181c4..5cd96e5430 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpURLConnectionManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -33,6 +32,7 @@ import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationException;
 import org.apache.logging.log4j.core.config.Property;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.net.ssl.LaxHostnameVerifier;
 import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
 import org.apache.logging.log4j.core.util.IOUtils;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
index 54ac2aace9..34a932f274 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.db.jdbc;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.Reader;
 import java.io.Serializable;
 import java.io.StringReader;
@@ -50,6 +49,7 @@ import 
org.apache.logging.log4j.core.appender.db.ColumnMapping;
 import org.apache.logging.log4j.core.appender.db.DbAppenderLoggingException;
 import org.apache.logging.log4j.core.config.plugins.convert.DateTypeConverter;
 import org.apache.logging.log4j.core.config.plugins.convert.TypeConverters;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.core.util.Log4jThread;
 import org.apache.logging.log4j.message.MapMessage;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/package-info.java
index 49a64405d8..02ea4343fc 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/package-info.java
@@ -19,7 +19,7 @@
  * a JDBC driver on your classpath for the database you wish to log to.
  */
 @Export
-@Version("2.20.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.appender.db.jdbc;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java
index 6bc352b993..f9953d6018 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.DirectoryStream;
@@ -32,6 +31,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LoggingException;
 import org.apache.logging.log4j.core.appender.rolling.action.Action;
 import org.apache.logging.log4j.core.appender.rolling.action.CompositeAction;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
 import org.apache.logging.log4j.core.pattern.NotANumber;
 import org.apache.logging.log4j.core.util.Integers;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
index 969e37f581..ea1bae7669 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -42,6 +41,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
 import org.apache.logging.log4j.core.util.Integers;
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
index 7694ce48a4..e105fa455b 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -41,6 +40,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
 import org.apache.logging.log4j.core.util.Integers;
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
index a7622b2c5f..e62419b685 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
@@ -16,13 +16,13 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.util.Objects;
 import org.apache.logging.log4j.core.appender.rolling.action.Action;
 import 
org.apache.logging.log4j.core.appender.rolling.action.CommonsCompressAction;
 import org.apache.logging.log4j.core.appender.rolling.action.GzCompressAction;
 import org.apache.logging.log4j.core.appender.rolling.action.ZipCompressAction;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 
 /**
  *  Enumerates over supported file extensions for compression.
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 8be7dd4f9c..afdb741658 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -46,6 +45,7 @@ import org.apache.logging.log4j.core.appender.FileManager;
 import org.apache.logging.log4j.core.appender.rolling.action.AbstractAction;
 import org.apache.logging.log4j.core.appender.rolling.action.Action;
 import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.core.util.FileUtils;
 import org.apache.logging.log4j.core.util.Log4jThreadFactory;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
index bd41ce31c7..1c0a0241fe 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -28,6 +27,7 @@ import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.appender.AppenderLoggingException;
 import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.FileUtils;
 import org.apache.logging.log4j.core.util.NullOutputStream;
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
index 54f406ec8c..5f7dedd50d 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.TimeUnit;
 import org.apache.logging.log4j.core.Core;
@@ -25,6 +24,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Integers;
 
 /**
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractPathAction.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractPathAction.java
index c8d251f672..b795d449bf 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractPathAction.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractPathAction.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.nio.file.FileVisitOption;
 import java.nio.file.FileVisitor;
@@ -29,6 +28,7 @@ import java.util.EnumSet;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
 
 /**
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
index e7bb2376db..5db648a126 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -25,6 +24,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 
 /**
  * File rename action.
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/PosixViewAttributeAction.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/PosixViewAttributeAction.java
index 51e038f1c1..f5149bb7fa 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/PosixViewAttributeAction.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/PosixViewAttributeAction.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.nio.file.FileVisitResult;
 import java.nio.file.FileVisitor;
@@ -37,6 +36,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
 import org.apache.logging.log4j.core.util.FileUtils;
 import org.apache.logging.log4j.util.Strings;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
index 92d351e2de..ec76a76d60 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.async;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -36,6 +35,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.jmx.RingBufferAdmin;
 import org.apache.logging.log4j.core.util.Booleans;
 import org.apache.logging.log4j.spi.AbstractLogger;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
index d6143cdc15..dd50987f25 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.config;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -34,6 +33,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Objects;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.net.UrlConnectionFactory;
 import org.apache.logging.log4j.core.util.FileUtils;
 import org.apache.logging.log4j.core.util.Loader;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
index bf039a2daf..43016cfbed 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.config.builder.impl;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.StringReader;
@@ -60,6 +59,7 @@ import 
org.apache.logging.log4j.core.config.builder.api.PropertyComponentBuilder
 import 
org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder;
 import org.apache.logging.log4j.core.config.builder.api.ScriptComponentBuilder;
 import 
org.apache.logging.log4j.core.config.builder.api.ScriptFileComponentBuilder;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Integers;
 import org.apache.logging.log4j.core.util.Throwables;
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/package-info.java
index 32a69487d7..c7feac338f 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/package-info.java
@@ -20,7 +20,7 @@
  * @since 2.4
  */
 @Export
-@Version("2.25.0")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.config.builder.impl;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
index 6c81224c2d..8b57df7fcd 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.config.plugins.convert;
 
 import static org.apache.logging.log4j.util.Strings.toRootLowerCase;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -37,6 +36,7 @@ import java.util.regex.Pattern;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.CronExpression;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.Constants;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/package-info.java
index a430094531..e7d16d7f33 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/package-info.java
@@ -20,7 +20,7 @@
  * attributes in plugin factory methods.
  */
 @Export
-@Version("2.24.0")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.config.plugins.convert;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java
index 53a32a99ed..810938c2ee 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.config.plugins.util;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -38,6 +37,7 @@ import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.jar.JarInputStream;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Loader;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.osgi.framework.FrameworkUtil;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/package-info.java
index c2c42b8d5b..e395672615 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/package-info.java
@@ -19,7 +19,7 @@
  * Utility and manager classes for Log4j 2 plugins.
  */
 @Export
-@Version("2.20.2")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.config.plugins.util;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
index 1a1c22835a..31c43983e7 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.config.status;
 
-import edu.umd.cs.findbugs.annotations.Nullable;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
@@ -30,6 +29,7 @@ import org.apache.logging.log4j.core.util.FileUtils;
 import org.apache.logging.log4j.core.util.NetUtils;
 import org.apache.logging.log4j.status.StatusConsoleListener;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.jspecify.annotations.Nullable;
 
 /**
  * Configuration for setting up the {@link StatusLogger} fallback listener.
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/package-info.java
index 1e20784cf9..703f79aa00 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/package-info.java
@@ -19,7 +19,7 @@
  * Configuration classes for the {@link 
org.apache.logging.log4j.status.StatusLogger} API.
  */
 @Export
-@Version("2.20.2")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.config.status;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
index 6caeec59ae..3218589bb1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.config.xml;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -41,6 +40,7 @@ import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.Reconfigurable;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.status.StatusConfiguration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.core.util.Integers;
 import org.apache.logging.log4j.core.util.Loader;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java
index 62ef3a596e..cc1f2e6c02 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.filter;
 
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.InputStream;
 import java.net.URI;
@@ -44,6 +43,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.filter.mutable.KeyValuePairConfig;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.AuthorizationProvider;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.core.util.internal.HttpInputStreamUtil;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/package-info.java
index bb45186e7a..f02feaa580 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/package-info.java
@@ -22,7 +22,7 @@
  * {@link org.apache.logging.log4j.core.Filter#ELEMENT_TYPE filter}.
  */
 @Export
-@Version("2.25.0")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.filter;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-core/src/main/java/org/apache/logging/log4j/core/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..ffad525732 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.core.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
index e91cb4c388..d8927d6737 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.jmx;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.io.ByteArrayInputStream;
@@ -44,6 +43,7 @@ import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.Strings;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/package-info.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/package-info.java
index 480cc2c6b2..dd13c9482a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/package-info.java
@@ -18,7 +18,7 @@
  * Log4j 2 JMX support.
  */
 @Export
-@Version("2.23.0")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.jmx;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
index 9889a6a7c2..58e3560711 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
@@ -19,7 +19,6 @@ package org.apache.logging.log4j.core.layout;
 import static org.apache.logging.log4j.util.Chars.LF;
 import static org.apache.logging.log4j.util.Chars.NUL;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -43,6 +42,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.layout.internal.ExcludeChecker;
 import org.apache.logging.log4j.core.layout.internal.IncludeChecker;
 import org.apache.logging.log4j.core.layout.internal.ListChecker;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
index 4debdfab72..b5f5cc9f62 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.layout;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InterruptedIOException;
 import java.io.LineNumberReader;
@@ -37,6 +36,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.pattern.DatePatternConverter;
 import org.apache.logging.log4j.core.util.Transform;
 import org.apache.logging.log4j.util.Strings;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java
index 2ff23cc38f..eda565875b 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java
@@ -16,10 +16,10 @@
  */
 package org.apache.logging.log4j.core.lookup;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Map;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 
 /**
  * A map-based lookup for main arguments.
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
index 1aa2f5e18d..cfd6a9003d 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.net;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Properties;
@@ -26,6 +25,7 @@ import javax.naming.InitialContext;
 import javax.naming.NamingException;
 import org.apache.logging.log4j.core.appender.AbstractManager;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.JndiCloser;
 import org.apache.logging.log4j.util.PropertiesUtil;
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
index f44132df6d..72376d3965 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.net;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -41,6 +40,7 @@ import org.apache.logging.log4j.LoggingException;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.layout.AbstractStringLayout.Serializer;
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
index ac53c1b4a7..75d4306b68 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.net;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.Serializable;
@@ -34,6 +33,7 @@ import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.appender.AppenderLoggingException;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.appender.OutputStreamManager;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.core.util.Log4jThread;
 import org.apache.logging.log4j.core.util.NullOutputStream;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
index fe57d821d9..68b933bfea 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.net;
 
 import static org.apache.logging.log4j.util.Strings.toRootLowerCase;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.net.HttpURLConnection;
 import java.net.JarURLConnection;
@@ -30,6 +29,7 @@ import java.util.List;
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLContext;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.net.ssl.LaxHostnameVerifier;
 import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
 import org.apache.logging.log4j.core.net.ssl.SslConfigurationFactory;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/package-info.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/package-info.java
index 9a23c5b137..089d4b3f26 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/package-info.java
@@ -25,7 +25,7 @@
  * </ul>
  */
 @Export
-@Version("2.20.3")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.net;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/FilePasswordProvider.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/FilePasswordProvider.java
index f2407a979b..d264c5e570 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/FilePasswordProvider.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/FilePasswordProvider.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.net.ssl;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
@@ -26,6 +25,7 @@ import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 
 /**
  * PasswordProvider that reads password from a file.
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/LaxHostnameVerifier.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/LaxHostnameVerifier.java
index 0068619c70..3e2ef8e253 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/LaxHostnameVerifier.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/LaxHostnameVerifier.java
@@ -16,9 +16,9 @@
  */
 package org.apache.logging.log4j.core.net.ssl;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLSession;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 
 /**
  * An HostnameVerifier which accepts everything.
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/package-info.java
index 7f7b26c282..748173b9a3 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/package-info.java
@@ -18,7 +18,7 @@
  * Log4j 2 SSL support
  */
 @Export
-@Version("2.20.3")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.net.ssl;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/package-info.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/package-info.java
index 00552976b7..45bc926c52 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/package-info.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/package-info.java
@@ -18,7 +18,7 @@
  * Implementation of Log4j 2.
  */
 @Export
-@Version("2.24.2")
+@Version("2.26.0")
 package org.apache.logging.log4j.core;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
index 8f55ab48cb..125cefbf40 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.script;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -30,6 +29,7 @@ import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.ExtensionLanguageMapping;
 import org.apache.logging.log4j.core.util.FileUtils;
 import org.apache.logging.log4j.core.util.IOUtils;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/Generate.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/Generate.java
index 873729a4bc..81afa461dc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/Generate.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/Generate.java
@@ -16,11 +16,11 @@
  */
 package org.apache.logging.log4j.core.tools;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.core.util.Integers;
 
 /**
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/package-info.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/package-info.java
index 8cbd2eb92f..38f664c29c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/package-info.java
@@ -18,7 +18,7 @@
  * Log4j 2 command line tools.
  */
 @Export
-@Version("2.20.1")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.tools;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java
index 6c1dcbb986..fb0b56bfce 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/tools/picocli/CommandLine.java
@@ -22,7 +22,6 @@ import static 
org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Colum
 import static org.apache.logging.log4j.util.Strings.toRootLowerCase;
 import static org.apache.logging.log4j.util.Strings.toRootUpperCase;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.PrintStream;
 import java.lang.annotation.ElementType;
@@ -70,6 +69,7 @@ import java.util.TreeSet;
 import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.regex.Pattern;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import 
org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Ansi.IStyle;
 import org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Ansi.Style;
 import org.apache.logging.log4j.core.tools.picocli.CommandLine.Help.Ansi.Text;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
index 5eb467d0be..74ac05e64a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.util;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.net.URI;
@@ -34,6 +33,7 @@ import java.nio.file.attribute.UserPrincipalLookupService;
 import java.util.Objects;
 import java.util.Set;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.status.StatusLogger;
 
 /**
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NameUtil.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NameUtil.java
index c1f9c6d5a8..1c2b32d0d8 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NameUtil.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NameUtil.java
@@ -16,11 +16,11 @@
  */
 package org.apache.logging.log4j.core.util;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.nio.charset.Charset;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Objects;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.util.Strings;
 
 /**
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java
index 22286c636d..92a85a6fa1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/NetUtils.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.util;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.net.InetAddress;
 import java.net.MalformedURLException;
@@ -32,6 +31,7 @@ import java.util.Enumeration;
 import java.util.List;
 import java.util.function.Function;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.status.StatusLogger;
 
 /**
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
index 5a79ab8b9a..e7f4757b21 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.util;
 
 import static java.util.Objects.requireNonNull;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.File;
 import java.io.IOException;
 import java.net.MalformedURLException;
@@ -30,6 +29,7 @@ import java.nio.file.Paths;
 import java.util.Objects;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.Strings;
 import org.jspecify.annotations.NullMarked;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
index 7c97d495ba..cf00631f9f 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.util;
 
 import static java.util.Objects.requireNonNull;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import java.io.InterruptedIOException;
 import java.io.LineNumberReader;
@@ -29,6 +28,7 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import org.apache.logging.log4j.core.internal.annotation.SuppressFBWarnings;
 
 /**
  * Helps with Throwable objects.
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/package-info.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/package-info.java
index 932e8bc080..b9efa51956 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/package-info.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/package-info.java
@@ -18,7 +18,7 @@
  * Log4j 2 helper classes.
  */
 @Export
-@Version("2.25.0")
+@Version("2.26.0")
 package org.apache.logging.log4j.core.util;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/Log4jBridgeHandler.java 
b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/Log4jBridgeHandler.java
index efc3e56398..40a8a0d2f0 100644
--- 
a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/Log4jBridgeHandler.java
+++ 
b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/Log4jBridgeHandler.java
@@ -17,7 +17,6 @@
 package org.apache.logging.log4j.jul;
 
 // note: NO import of Logger, Level, LogManager to prevent conflicts JUL/log4j
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.Enumeration;
@@ -28,6 +27,7 @@ import java.util.logging.LogRecord;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.LoggerConfig;
+import org.apache.logging.log4j.jul.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.spi.ExtendedLogger;
 import org.apache.logging.log4j.status.StatusLogger;
 
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-jul/src/main/java/org/apache/logging/log4j/jul/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..0fddf126ce 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.jul.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/package-info.java 
b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/package-info.java
index dd22747306..d7c5b41f89 100644
--- a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/package-info.java
+++ b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the license.
  */
 @Export
-@Version("2.20.2")
+@Version("2.26.0")
 package org.apache.logging.log4j.jul;
 
 import org.osgi.annotation.bundle.Export;
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/internal/annotation/SuppressFBWarnings.java
similarity index 68%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..4328e28efc 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.layout.template.json.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/Uris.java
 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/Uris.java
index 957326d9ad..d1c69d8788 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/Uris.java
+++ 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/Uris.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.layout.template.json.util;
 
 import static org.apache.logging.log4j.util.Strings.toRootLowerCase;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -33,6 +32,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import org.apache.logging.log4j.Logger;
+import 
org.apache.logging.log4j.layout.template.json.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.LoaderUtil;
 
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
index dbb7814d27..a806ff5105 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 @Export
-@Version("2.22.0")
+@Version("2.26.0")
 @Open("org.apache.logging.log4j.core")
 package org.apache.logging.log4j.layout.template.json.util;
 
diff --git a/log4j-parent/pom.xml b/log4j-parent/pom.xml
index 6328ac4c9b..dcb10255a4 100644
--- a/log4j-parent/pom.xml
+++ b/log4j-parent/pom.xml
@@ -132,8 +132,6 @@
     
<osgi.annotation.versioning.version>1.1.2</osgi.annotation.versioning.version>
     <pax-exam.version>4.14.0</pax-exam.version>
     <plexus-utils.version>3.6.0</plexus-utils.version>
-    <!-- `com.github.spotbugs:spotbugs-annotations:4.9.0` and onwards require 
Java 11: -->
-    <spotbugs-annotations.version>4.8.6</spotbugs-annotations.version>
     <spring-boot.version>2.7.18</spring-boot.version>
     <spring-framework.version>5.3.39</spring-framework.version>
     <system-stubs.version>2.0.3</system-stubs.version>
@@ -163,7 +161,6 @@
     <bnd-jpms-module-info>$[bnd-module-name];access=0;modules="
       biz.aQute.bnd.annotation,
       com.google.errorprone.annotations,
-      com.github.spotbugs.annotations,
       org.osgi.annotation.bundle,
       org.osgi.annotation.versioning
       "</bnd-jpms-module-info>
@@ -877,13 +874,6 @@
       <scope>provided</scope>
     </dependency>
 
-    <dependency>
-      <groupId>com.github.spotbugs</groupId>
-      <artifactId>spotbugs-annotations</artifactId>
-      <version>${spotbugs-annotations.version}</version>
-      <scope>provided</scope>
-    </dependency>
-
   </dependencies>
 
   <build>
@@ -1124,11 +1114,6 @@
               <artifactId>org.osgi.annotation.versioning</artifactId>
               <version>${osgi.annotation.versioning.version}</version>
             </dependency>
-            <dependency>
-              <groupId>com.github.spotbugs</groupId>
-              <artifactId>spotbugs-annotations</artifactId>
-              <version>${spotbugs-annotations.version}</version>
-            </dependency>
           </compileOnlyApiDependencies>
         </configuration>
         <executions>
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
 
b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/internal/annotation/SuppressFBWarnings.java
similarity index 69%
copy from 
log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
copy to 
log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/internal/annotation/SuppressFBWarnings.java
index dbb7814d27..f139a9c809 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/package-info.java
+++ 
b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/internal/annotation/SuppressFBWarnings.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Export
-@Version("2.22.0")
-@Open("org.apache.logging.log4j.core")
-package org.apache.logging.log4j.layout.template.json.util;
+package org.apache.logging.log4j.perf.internal.annotation;
 
-import aQute.bnd.annotation.jpms.Open;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Annotation to suppress Spotbugs warnings.
+ */
+@Retention(RetentionPolicy.CLASS)
+public @interface SuppressFBWarnings {
+
+    String[] value() default {};
+
+    String justification() default "";
+}
diff --git 
a/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JdbcAppenderBenchmark.java
 
b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JdbcAppenderBenchmark.java
index 83a4d45672..baa44d234a 100644
--- 
a/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JdbcAppenderBenchmark.java
+++ 
b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JdbcAppenderBenchmark.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.perf.jmh;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
@@ -29,6 +28,7 @@ import 
org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.config.DefaultConfiguration;
 import org.apache.logging.log4j.core.util.Closer;
+import org.apache.logging.log4j.perf.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
diff --git 
a/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JpaAppenderBenchmark.java
 
b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JpaAppenderBenchmark.java
index e58d7613b6..75c614588b 100644
--- 
a/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JpaAppenderBenchmark.java
+++ 
b/log4j-perf-test/src/main/java/org/apache/logging/log4j/perf/jmh/JpaAppenderBenchmark.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.perf.jmh;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
@@ -29,6 +28,7 @@ import 
org.apache.logging.log4j.core.appender.db.jpa.JpaAppender;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.config.DefaultConfiguration;
 import org.apache.logging.log4j.core.util.Closer;
+import org.apache.logging.log4j.perf.internal.annotation.SuppressFBWarnings;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
diff --git a/src/changelog/.2.x.x/3985_remove_spotbugs_annotations.xml 
b/src/changelog/.2.x.x/3985_remove_spotbugs_annotations.xml
new file mode 100644
index 0000000000..a2c7b3b8b2
--- /dev/null
+++ b/src/changelog/.2.x.x/3985_remove_spotbugs_annotations.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entry xmlns="https://logging.apache.org/xml/ns";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="
+           https://logging.apache.org/xml/ns
+           https://logging.apache.org/xml/ns/log4j-changelog-0.xsd";
+       type="removed">
+    <issue id="3984" 
link="https://github.com/apache/logging-log4j2/issues/3984"/>
+    <issue id="3985" 
link="https://github.com/apache/logging-log4j2/pull/3985"/>
+    <description format="asciidoc">
+        Remove the `com.github.spotbugs:spotbugs-annotations` dependency
+    </description>
+</entry>

Reply via email to