diff --git a/src/it/CHANGES_v3_to_v4.md b/src/it/CHANGES_v3_to_v4.md
index ccb229514..1687e41c3 100644
--- a/src/it/CHANGES_v3_to_v4.md
+++ b/src/it/CHANGES_v3_to_v4.md
@@ -51,6 +51,7 @@ To reproduce the old behavior, users can just disable the incremental compilatio
The tests in the following directories were already disabled and have been removed:
* `MCOMPILER-197` because it ran only on Java 8 while the build now requires Java 17.
+* `MCOMPILER-346` because it tests an issue fixed in Java 15 while the build now requires Java 17.
* `groovy-project-with-new-plexus-compiler` because it ran only on Java 8 and the plexus compiler has been removed.
The tests in the following directores are not supported anymore and have been removed:
diff --git a/src/it/MCOMPILER-346/invoker.properties b/src/it/MCOMPILER-346/invoker.properties
deleted file mode 100644
index 965cfab67..000000000
--- a/src/it/MCOMPILER-346/invoker.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-
-invoker.goals = clean compile
-invoker.buildResult = failure
diff --git a/src/it/MCOMPILER-346/pom.xml b/src/it/MCOMPILER-346/pom.xml
deleted file mode 100644
index 2dccb817c..000000000
--- a/src/it/MCOMPILER-346/pom.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
- 4.0.0
-
- org.apache.maven.plugins.compiler.it
- MCOMPILER-346-mre
- 1.0
- jar
- MCOMPILER-346 Minimal Reproducible Example (MRE)
- https://github.com/basil/MCOMPILER-346-mre
-
- UTF-8
-
-
-
- org.eclipse.sisu
- org.eclipse.sisu.plexus
- 0.2.0
-
-
- org.jenkins-ci.main
- remoting
- 3.2
-
-
-
-
- repo.jenkins-ci.org
- https://repo.jenkins-ci.org/public/
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- @project.version@
-
-
-
-
diff --git a/src/it/MCOMPILER-346/src/main/java/org/jenkinsci/test/acceptance/server/PooledJenkinsController.java b/src/it/MCOMPILER-346/src/main/java/org/jenkinsci/test/acceptance/server/PooledJenkinsController.java
deleted file mode 100644
index 06706f90b..000000000
--- a/src/it/MCOMPILER-346/src/main/java/org/jenkinsci/test/acceptance/server/PooledJenkinsController.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.jenkinsci.test.acceptance.server;
-
-import javax.inject.Inject;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.Executors;
-
-import com.cloudbees.sdk.extensibility.Extension;
-import com.google.inject.Injector;
-import hudson.remoting.Callable;
-import hudson.remoting.Channel;
-import hudson.remoting.Channel.Mode;
-import hudson.remoting.ChannelBuilder;
-import jnr.unixsocket.UnixSocketAddress;
-import jnr.unixsocket.UnixSocketChannel;
-import org.jenkinsci.remoting.RoleChecker;
-import org.jenkinsci.test.acceptance.controller.IJenkinsController;
-import org.jenkinsci.test.acceptance.controller.JenkinsController;
-import org.jenkinsci.test.acceptance.controller.LocalController.LocalFactoryImpl;
-import org.jenkinsci.test.acceptance.log.LogListenable;
-import org.jenkinsci.test.acceptance.log.LogListener;
-import org.jenkinsci.test.acceptance.log.LogSplitter;
-
-import static java.lang.System.*;
-
-/**
- * {@link JenkinsController} that talks to {@link JenkinsControllerPoolProcess} over Unix domain socket.
- *
- * @author Kohsuke Kawaguchi
- */
-public class PooledJenkinsController extends JenkinsController implements LogListenable {
- private URL url;
- private final File socket;
- private UnixSocketChannel conn;
- private final LogSplitter splitter = new LogSplitter();
- private Channel channel;
- private IJenkinsController controller;
- private final List toUnpack = new LinkedList<>();
-
- public PooledJenkinsController(Injector i, File socket) {
- super(i);
- this.socket = socket;
- }
-
- @Override
- public void addLogListener(LogListener l) {
- splitter.addLogListener(l);
- }
-
- @Override
- public void removeLogListener(LogListener l) {
- splitter.removeLogListener(l);
- }
-
- private boolean connect() throws IOException {
- if (conn != null) return false;
-
- System.out.println("Requesting jut instance using socket " + socket.getAbsolutePath());
- UnixSocketAddress address = new UnixSocketAddress(socket);
- conn = UnixSocketChannel.open(address);
-
- channel = new ChannelBuilder("JenkinsPool", Executors.newCachedThreadPool())
- .withMode(Mode.BINARY)
- .build(ChannelStream.in(conn), ChannelStream.out(conn));
-
- try {
- controller = (IJenkinsController) channel.waitForRemoteProperty("controller");
- controller.start();
- url = controller.getUrl();
-
- if (!isQuite) {
- splitter.addLogListener(getLogPrinter());
- }
-
- final LogListener l = channel.export(LogListener.class, splitter);
- channel.call(new InstallLogger(controller, l));
-
- for (byte[] content : toUnpack) {
- controller.populateJenkinsHome(content, false);
- }
- toUnpack.clear();
- } catch (InterruptedException e) {
- throw new IOException(e);
- }
-
- return true;
- }
-
- @Override
- public void startNow() throws IOException {
- connect();
- }
-
- @Override
- public void stopNow() throws IOException {
- controller.stop();
- }
-
- @Override
- public void populateJenkinsHome(byte[] template, boolean clean) throws IOException {
- if (controller != null) {
- controller.populateJenkinsHome(template, clean);
- } else {
- if (clean) {
- throw new UnsupportedOperationException("clean mode unsupported for now");
- }
- toUnpack.add(template);
- }
- }
-
- @Override
- public URL getUrl() {
- if (url == null) throw new IllegalStateException("This controller has not been started");
- return url;
- }
-
- @Override
- public void tearDown() throws IOException {
- channel.close();
- try {
- channel.join(3000);
- } catch (InterruptedException e) {
- throw new IOException(e);
- } finally {
- if (conn != null) conn.close();
- conn = null;
- }
- }
-
- @Override
- public void diagnose(Throwable cause) {
- // TODO: Report jenkins log
- cause.printStackTrace(out);
- if (getenv("INTERACTIVE") != null && getenv("INTERACTIVE").equals("true")) {
- out.println("Commencing interactive debugging. Browser session was kept open.");
- out.println("Press return to proceed.");
- try {
- in.read();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- @Extension
- public static class FactoryImpl extends LocalFactoryImpl {
- @Inject
- Injector i;
-
- @Override
- public String getId() {
- return "pool";
- }
-
- @Override
- public JenkinsController create() {
- return i.getInstance(PooledJenkinsController.class);
- }
- }
-
- /**
- * Runs on the pool server to install logger.
- */
- private static class InstallLogger implements Callable {
- private final IJenkinsController controller;
- private final LogListener l;
-
- private InstallLogger(IJenkinsController controller, LogListener l) {
- this.controller = controller;
- this.l = l;
- }
-
- @Override
- public Void call() throws IOException {
- if (controller instanceof LogListenable) {
- LogListenable ll = (LogListenable) controller;
- ll.addLogListener(l);
- }
- return null;
- }
-
- @Override
- public void checkRoles(RoleChecker checker) throws SecurityException {}
-
- private static final long serialVersionUID = 1L;
- }
-}
diff --git a/src/it/MCOMPILER-346/verify.groovy b/src/it/MCOMPILER-346/verify.groovy
deleted file mode 100644
index 9c4e0f102..000000000
--- a/src/it/MCOMPILER-346/verify.groovy
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-def logFile = new File( basedir, 'build.log' )
-assert logFile.exists()
-content = logFile.text
-
-/*
- * The messages expected by this test were:
- *
- * - package org.jenkinsci.test.acceptance.controller does not exist
- * - package org.jenkinsci.test.acceptance.log does not exist
- *
- * But we cannot test the full messages as shown above because they may be localized.
- * Test only the package name on the assumption that they will be present in all locales.
- */
-assert content.contains( 'org.jenkinsci.test.acceptance.controller' )
-assert content.contains( 'org.jenkinsci.test.acceptance.log' )