@Test public void testClassNotFoundAfterDeserialization() throws Exception { // JBRULES-3670 String drl = "package completely.other.deal;\n" + "\n" + "declare Person\n" + " firstName : String\n" + " lastName : String\n" + "end\n" + "\n" + "rule \"now use it B\"\n" + " when\n" + " Person( $christianName, $surname; )\n" + " then\n" + " insert( new Person( $christianName, null ) );\n" + "end"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newByteArrayResource(drl.getBytes()), ResourceType.DRL); if (kbuilder.hasErrors()) { throw new RuntimeException("" + kbuilder.getErrors()); } FileManager fileManager = new FileManager().setUp(); try { File root = fileManager.getRootDirectory(); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File(root, "test.drl.compiled"))); out.writeObject(kbuilder.getKnowledgePackages()); out.close(); KieBaseConfiguration kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kconf.setOption(LRUnlinkingOption.ENABLED); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(kconf); ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(root, "test.drl.compiled"))); kbase.addKnowledgePackages((Collection<KnowledgePackage>) in.readObject()); in.close(); } finally { fileManager.tearDown(); } }