All - I believe this may be tied to RIVER-292, but I'll just outline the issue
The UIDescriptor is being asked to load the UIFactory via the current thread's Context Class Loader rather than the classloader that the service itself is being loaded with. Thus the code: try { JFrameFactory uiFactory = (JFrameFactory) uiDescriptor.getUIFactory(Thread.currentThread().getContextClassLoader()); JFrame frame = uiFactory.getJFrame(item); frame.validate(); frame.setVisible(true); } should be try { JFrameFactory uiFactory = (JFrameFactory) uiDescriptor.getUIFactory(item.service.getClass().getClassLoader()); JFrame frame = uiFactory.getJFrame(item); frame.validate(); frame.setVisible(true); } as per http://www.artima.com/jini/serviceui/doc11/index.html Also I think the restriction of just JFrameFactory might require new additional code to support the other UIFactory types. Thanks Calum