diff --git a/projects/reload4j/Dockerfile b/projects/reload4j/Dockerfile
new file mode 100644
index 000000000..ccb8f285b
--- /dev/null
+++ b/projects/reload4j/Dockerfile
@@ -0,0 +1,35 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FROM gcr.io/oss-fuzz-base/base-builder-jvm
+
+RUN curl -L https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip -o maven.zip && \
+unzip maven.zip -d $SRC/maven && \
+rm -rf maven.zip
+
+ENV MVN $SRC/maven/apache-maven-3.6.3/bin/mvn
+
+WORKDIR ${SRC}
+#
+# clone repository
+#
+RUN git clone https://github.com/qos-ch/reload4j
+COPY remove-jdk8-cap.diff $SRC/
+RUN cd reload4j && (for i in ${SRC}/remove-jdk8-cap.diff; do tr -d '\015' < $i | git apply; done )
+
+ADD pom.xml build.sh ${SRC}/
+ADD src/ ${SRC}/src/
+WORKDIR ${SRC}/reload4j
\ No newline at end of file
diff --git a/projects/reload4j/build.sh b/projects/reload4j/build.sh
new file mode 100644
index 000000000..a31f5cdb2
--- /dev/null
+++ b/projects/reload4j/build.sh
@@ -0,0 +1,75 @@
+#!/bin/bash -eu
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+MVN_FLAGS="-Dmaven.compiler.source=15 -Dmaven.compiler.target=15 -DskipTests -Djdk.version=15"
+ALL_JARS=""
+
+# install the build servers' jazzer-api into the maven repository
+pushd "/tmp"
+ ${MVN} install:install-file -Dfile=${JAZZER_API_PATH} \
+ -DgroupId="com.code-intelligence" \
+ -DartifactId="jazzer-api" \
+ -Dversion="0.12.0" \
+ -Dpackaging=jar
+popd
+
+pushd "${SRC}/reload4j"
+ ${MVN} package ${MVN_FLAGS}
+ ${MVN} install ${MVN_FLAGS}
+ CURRENT_VERSION=$(${MVN} org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
+ -Dexpression=project.version -q -DforceStdout)
+popd
+
+pushd ${SRC}
+ ${MVN} package -Dreload4jVersion="${CURRENT_VERSION}" ${MVN_FLAGS}
+ install -v target/reload4j-fuzzer-${CURRENT_VERSION}.jar ${OUT}/reload4j-fuzzer-${CURRENT_VERSION}.jar
+ ALL_JARS="${ALL_JARS} reload4j-fuzzer-${CURRENT_VERSION}.jar"
+popd
+
+
+
+# The classpath at build-time includes the project jars in $OUT as well as the
+# Jazzer API.
+BUILD_CLASSPATH=$(echo $ALL_JARS | xargs printf -- "$OUT/%s:"):$JAZZER_API_PATH
+
+# All .jar and .class files lie in the same directory as the fuzzer at runtime.
+RUNTIME_CLASSPATH=$(echo $ALL_JARS | xargs printf -- "\$this_dir/%s:"):\$this_dir
+
+MVN_FUZZERS_PREFIX="src/main/java"
+
+for fuzzer in $(find ${SRC} -name '*Fuzzer.java'); do
+ stripped_path=$(echo ${fuzzer} | sed 's|^.*src/main/java/\(.*\).java$|\1|');
+ # the .java was stripped by sed
+ if (echo ${stripped_path} | grep ".java$"); then
+ continue;
+ fi
+
+ fuzzer_basename=$(basename -s .java $fuzzer)
+ fuzzer_classname=$(echo ${stripped_path} | sed 's|/|.|g');
+
+ # Create an execution wrapper that executes Jazzer with the correct arguments.
+ echo "#!/bin/sh
+# LLVMFuzzerTestOneInput for fuzzer detection.
+this_dir=\$(dirname \"\$0\")
+LD_LIBRARY_PATH=\"$JVM_LD_LIBRARY_PATH\":\$this_dir \
+\$this_dir/jazzer_driver --agent_path=\$this_dir/jazzer_agent_deploy.jar \
+--cp=${RUNTIME_CLASSPATH} \
+--target_class=${fuzzer_classname} \
+--jvm_args=\"-Xmx2048m\" \
+\$@" > $OUT/${fuzzer_basename}
+ chmod u+x $OUT/${fuzzer_basename}
+done
diff --git a/projects/reload4j/pom.xml b/projects/reload4j/pom.xml
new file mode 100644
index 000000000..6ee51b605
--- /dev/null
+++ b/projects/reload4j/pom.xml
@@ -0,0 +1,58 @@
+
+ 4.0.0
+
+ ossfuzz
+ reload4j-fuzzer
+ ${reload4jVersion}
+ jar
+
+
+ 15
+ 15
+ ossfuzz.ASTFuzzer
+ UTF-8
+
+
+
+
+
+ com.code-intelligence
+ jazzer-api
+ 0.12.0
+
+
+ ch.qos.reload4j
+ reload4j
+ ${reload4jVersion}
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.3.0
+
+
+ package
+
+ shade
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/reload4j/project.yaml b/projects/reload4j/project.yaml
new file mode 100644
index 000000000..4fa25bb49
--- /dev/null
+++ b/projects/reload4j/project.yaml
@@ -0,0 +1,14 @@
+homepage: "https://reload4j.qos.ch"
+language: jvm
+main_repo: "https://github.com/qos-ch/reload4j.git"
+fuzzing_engines:
+ - libfuzzer
+sanitizers:
+ - address
+vendor_ccs:
+ - "wagner@code-intelligence.com"
+ - "yakdan@code-intelligence.com"
+ - "glendowne@code-intelligence.com"
+ - "patrice.salathe@code-intelligence.com"
+ - "hlin@code-intelligence.com"
+ - "schaich@code-intelligence.com"
\ No newline at end of file
diff --git a/projects/reload4j/remove-jdk8-cap.diff b/projects/reload4j/remove-jdk8-cap.diff
new file mode 100644
index 000000000..3c8765eda
--- /dev/null
+++ b/projects/reload4j/remove-jdk8-cap.diff
@@ -0,0 +1,29 @@
+--- a/pom.xml
++++ b/pom.xml
+@@ -470,26 +470,6 @@
+
+
+
+-
+-
+- org.apache.maven.plugins
+- maven-toolchains-plugin
+-
+-
+-
+- toolchain
+-
+-
+-
+-
+-
+-
+- [1.5, 8]
+-
+-
+-
+-
+-
+
+
+
diff --git a/projects/reload4j/src/main/java/ossfuzz/LoggerFuzzer.java b/projects/reload4j/src/main/java/ossfuzz/LoggerFuzzer.java
new file mode 100644
index 000000000..77e7f64f8
--- /dev/null
+++ b/projects/reload4j/src/main/java/ossfuzz/LoggerFuzzer.java
@@ -0,0 +1,68 @@
+package ossfuzz;
+
+import com.code_intelligence.jazzer.api.FuzzedDataProvider;
+
+import org.apache.log4j.*;
+
+public class LoggerFuzzer {
+ protected String m_fqcn;
+ protected Level m_level;
+ protected String m_diagnostic;
+ protected Exception m_throwable;
+ protected String m_key;
+ protected Object[] m_params;
+
+ LoggerFuzzer(FuzzedDataProvider fuzzedDataProvider) {
+ int n = fuzzedDataProvider.consumeInt(0, 10);
+ m_params = new Object[n];
+ for(int i=0; i