Java FileNotFoundException与PowerMock+;流口水+;JBoss

Java FileNotFoundException与PowerMock+;流口水+;JBoss,java,jboss,drools,powermock,Java,Jboss,Drools,Powermock,有人使用过“PowerMock+Drools+JBoss”组合吗 当我在JUnit测试(JUnit 4.10)中运行try-to-unit-test-drools规则时,我加载了drl规则knolage-kobtext: KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("com/mycompany

有人使用过“PowerMock+Drools+JBoss”组合吗

当我在JUnit测试(JUnit 4.10)中运行try-to-unit-test-drools规则时,我加载了drl规则knolage-kobtext:

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("com/mycompany/myproject/rooles.drl"), ResourceType.DRL);
而且效果很好。 org.drools.io.impl.ClassPathResource包含3个类加载器:

  • java.net.FactoryURLClassLoader
  • org.jboss.mx.loading.UnifiedClassLoader
  • sun.misc.Launcher
但当我加上

@RunWith(org.powermock.modules.junit4.PowerMockRunner.class)
到单元测试org.drools.io.impl.ClassPathResource包含2个类加载器:

  • org.powermock.core.classloader.MockClassLoader
  • sun.misc.Launcher
测试失败,出现java.io.FileNotFoundException:

java.lang.RuntimeException: java.io.FileNotFoundException: 'com/mycompany/myproject/rooles.drl' cannot be opened because it does not exist 
at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:638) 
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:28)
...
Caused by: java.io.FileNotFoundException: 'com/wiley/cms/jqa/service/lifecycle/lifecycle.drl' cannot be opened because it does not exist 
at org.drools.io.impl.ClassPathResource.getURL(ClassPathResource.java:128) 
at org.drools.io.impl.ClassPathResource.getInputStream(ClassPathResource.java:109) 
at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:352) 
at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:538)
...

有人能建议如何避免这个问题吗?

解决方案是添加@PowerMockIgnore(“org.drools.*)注释