I am using iReport 5.6.0 with Java 8. You need to make a small change to WeakListenerImpl.java to use with Java 7 and above: diff --git a/openide.util/src/org/openide/util/WeakListenerImpl.java b/openide.util/src/org/openide/util/WeakListenerImpl.java--- a/openide.util/src/org/openide/util/WeakListenerImpl.java+++ b/openide.util/src/org/openide/util/WeakListenerImpl.java@@ -404,6 +404,7 @@ if (proxyConstructor == null) { Class<?> proxyClass = Proxy.getProxyClass(c.getClassLoader(), c); proxyConstructor = proxyClass.getConstructor(InvocationHandler.class);+ proxyConstructor.setAccessible(true); constructors.put(c, new SoftReference>(proxyConstructor)); } That change breaks Java sandboxing - so don't run any untrusted code in iReport!