diff --git a/java/runjava/pom.xml b/java/runjava/pom.xml
index 8aeb185723052e612ca8ebc14ffba517c0cf032c..feed5f1912698ce948f965e6869e9f84d30b8519 100644
--- a/java/runjava/pom.xml
+++ b/java/runjava/pom.xml
@@ -43,6 +43,31 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>2.2</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <relocations>
+                                <relocation>
+                                    <pattern>net.sf.cglib</pattern>
+                                    <shadedPattern>io.osv.shade.net.sf.cglib</shadedPattern>
+                                </relocation>
+                                <relocation>
+                                    <pattern>org.objectweb.asm</pattern>
+                                    <shadedPattern>io.osv.shade.org.objectweb.asm</shadedPattern>
+                                </relocation>
+                            </relocations>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/java/runjava/src/main/java/io/osv/ContextIsolator.java b/java/runjava/src/main/java/io/osv/ContextIsolator.java
index 2c425e99a1954e1253c8cccc139efe6b739a9452..96e00504bb695319d077a66f4e840d482cbec1fe 100644
--- a/java/runjava/src/main/java/io/osv/ContextIsolator.java
+++ b/java/runjava/src/main/java/io/osv/ContextIsolator.java
@@ -60,8 +60,7 @@ public class ContextIsolator {
         ClassLoader originalSystemClassLoader = getOsvClassLoader().getParent();
         masterContext = new Context(originalSystemClassLoader, System.getProperties());
 
-        parentClassLoaderForIsolates = new TeeClassLoader(
-                new FilteringClassLoader(originalSystemClassLoader, "io.osv."));
+        parentClassLoaderForIsolates = originalSystemClassLoader;
 
         installSystemPropertiesProxy();
     }
diff --git a/java/runjava/src/main/java/io/osv/FilteringClassLoader.java b/java/runjava/src/main/java/io/osv/FilteringClassLoader.java
deleted file mode 100644
index 6c8c28a1af00394b4ed3a4186befcbf81363accc..0000000000000000000000000000000000000000
--- a/java/runjava/src/main/java/io/osv/FilteringClassLoader.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package io.osv;
-
-class FilteringClassLoader extends ClassLoader {
-    private final String allowedPrefix;
-
-    public FilteringClassLoader(ClassLoader parent, String allowedPrefix) {
-        super(parent);
-        this.allowedPrefix = allowedPrefix;
-    }
-
-    private boolean isClassAllowed(String name) {
-        return name.startsWith(allowedPrefix);
-    }
-
-    @Override
-    protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
-        if (!isClassAllowed(name)) {
-            throw new ClassNotFoundException(name);
-        }
-        return super.loadClass(name, resolve);
-    }
-}
diff --git a/java/runjava/src/main/java/io/osv/TeeClassLoader.java b/java/runjava/src/main/java/io/osv/TeeClassLoader.java
deleted file mode 100644
index 1d98a3b83582767aa439d7e0cecfa91e65d6d21e..0000000000000000000000000000000000000000
--- a/java/runjava/src/main/java/io/osv/TeeClassLoader.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package io.osv;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-
-class TeeClassLoader extends ClassLoader {
-    private ClassLoader delegate;
-
-    public TeeClassLoader(ClassLoader delegate) {
-        super(null);
-        this.delegate = delegate;
-    }
-
-    @Override
-    protected Class<?> findClass(String name) throws ClassNotFoundException {
-        return delegate.loadClass(name);
-    }
-
-    @Override
-    protected URL findResource(String name) {
-        return delegate.getResource(name);
-    }
-
-    @Override
-    protected Enumeration<URL> findResources(String name) throws IOException {
-        return delegate.getResources(name);
-    }
-}
diff --git a/java/tests/pom.xml b/java/tests/pom.xml
index e34b357d428372a1e1e5f24111a5431ad5facc85..e463d461cf8450c696631d953dd52e8afe900324 100644
--- a/java/tests/pom.xml
+++ b/java/tests/pom.xml
@@ -81,23 +81,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <testSourceDirectory>${basedir}/src/main/java/</testSourceDirectory>
-                    <testClassesDirectory>target/classes</testClassesDirectory>
-                    <argLine>-ea -Djava.system.class.loader=io.osv.OsvSystemClassLoader
-                        -Djava.util.logging.manager=io.osv.jul.IsolatingLogManager
-                    </argLine>
-                    <systemProperties>
-                        <property>
-                            <name>isolates.jar</name>
-                            <value>${io.osv:tests-isolates:jar:jar-with-dependencies}</value>
-                        </property>
-                    </systemProperties>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 </project>