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>