2014-10-31 62 views
0

我有几个Drools项目,并希望能够动态加载规则更改。这些项目都工作正常,直到我试图将KieScanner添加到他们。我跟着方向的位置:http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html/DroolsReleaseNotesChapter.html#d0e515调用KieScanner抛出ClassNotFoundException

我使用Drools的6.1.0.Final与Wildfly 8.0.0.Final

文档表示有在我的类路径中纪伊慈的依赖已经足够了。很明显,无论我做错了什么或者文档错误。

该项目建立,但是当它被调用时,我得到这个跟踪:

10:21:17946 ERROR [io.undertow.request](默认任务-2)UT005023:异常处理请求/目录/ vetec/search/facets/term:org.jboss.resteasy.spi.UnhandledException:javax.enterprise.inject.CreationException at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:76)[resteasy-jaxrs- 3.0.6.Final.jar:] at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:212)[resteasy-jaxrs-3.0.6.Final.jar:] at org.jboss.resteasy .core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:149)[resteasy-jaxrs-3.0.6.Final.jar :] at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:372)[resteasy-jaxrs-3.0.6.Final.jar:] at org.jboss.resteasy.core.SynchronousDispatcher.invoke( SynchronousDispatcher.java:179)[RestEasy的-JAXRS-3.0.6.Final.jar:]

所致:java.lang.NoClassDefFoundError:组织/阿帕奇/行家/库/内部/ MavenRepositorySystemSession 在org.kie。 scanner.MavenRepository.getMavenRepository(MavenRepository.java:73)[kie-ci-6.1.0.Final.jar:6.1.0.Final] at org.kie.scanner.ArtifactResolver。(ArtifactResolver.java:36)[kie -ci-6.1.0.Final.jar:6.1.0.Final] at org.kie.scanner.KieRepositoryScannerImpl.getArtifactResolver(KieRepositoryScannerImpl.java:87)[kie-ci-6.1.0.Final.jar:6.1。 0.Final] at org.kie.scanner.KieRepositoryScannerImpl.getArtifactVersion(KieRepositoryScannerImpl.java:108)[kie-ci-6.1.0.Final.jar:6.1.0.Final] at org.drools.compiler.kie.builder.impl .KieRepositoryImpl $ KieModuleRepo.load(KieRepositoryImpl.java:281)[drools-compiler-6.1.0.Final.jar:6.1.0.Final] at org.drools.compiler.kie.builder.impl.KieRepositoryImpl $ KieModuleRepo。 (KieRepositoryImpl.java:267)[drools-compiler-6.1.0.Final.jar:6.1.0.Final] at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:90 )[drools-compiler-6.1.0.Final.jar:6.1.0.Final] at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:77)[drools-compiler-6.1 .0.Final.jar:6.1.0.Final] at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServices Impress.java:97)[drools-compiler-6.1.0.Final.jar:6.1.0.Final] at com.sial.rules.cdi.KSessionContextProvider。(KSessionContextProvider.java:49)[sial-rules-0.0 .1 SNAPSHOT.jar:]

下面是pom.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.sial.rules</groupId> 
    <artifactId>sial-rules</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <repositories> 
    <repository> 
     <id>JBoss Repository</id> 
     <url>https://repository.jboss.org/nexus/content/groups/public/</url> 
    </repository> 
    </repositories> 
    <dependencyManagement> 
    <dependencies> 
    <!-- Added to ensure that we have the correct DROOLS/JBOSS versions --> 
     <dependency> 
      <groupId>org.drools</groupId> 
      <artifactId>drools-bom</artifactId> 
      <version>6.1.0.Final</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.wildfly.bom</groupId> 
      <artifactId>jboss-javaee-7.0-with-tools</artifactId> 
      <version>8.0.0.Final</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.wildfly.bom</groupId> 
      <artifactId>jboss-javaee-7.0-with-resteasy</artifactId> 
      <version>8.0.0.Final</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency>  
    </dependencies> 
    </dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>javax.enterprise</groupId> 
      <artifactId>cdi-api</artifactId> 
     </dependency>   
     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.drools</groupId> 
      <artifactId>drools-core</artifactId> 
     </dependency>       
     <dependency> 
      <groupId>org.drools</groupId> 
      <artifactId>drools-compiler</artifactId> 
     </dependency>  
     <dependency> 
      <groupId>org.drools</groupId> 
      <artifactId>drools-decisiontables</artifactId> 
     </dependency>  
     <dependency> 
      <groupId>org.drools</groupId> 
      <artifactId>drools-persistence-jpa</artifactId> 
     </dependency>     
     <dependency> 
      <groupId>org.drools</groupId> 
      <artifactId>knowledge-api</artifactId> 
     </dependency>  
     <dependency> 
      <groupId>org.kie</groupId> 
      <artifactId>kie-internal</artifactId> 
     </dependency>  
     <dependency> 
      <groupId>org.kie</groupId> 
      <artifactId>kie-api</artifactId> 
     </dependency>  
     <dependency> 
      <groupId>org.kie</groupId> 
      <artifactId>kie-ci</artifactId> 
         <exclusions> 
         <exclusion> 
          <groupId>org.jboss.netty</groupId> 
          <artifactId>netty</artifactId> 
         </exclusion> 
         </exclusions> 
     </dependency> 


     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-core-asl</artifactId> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-api</artifactId> 
      <version>2.0-rc1</version> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.drools</groupId> 
     <artifactId>drools-maven-plugin</artifactId> 
     <version>6.0.0.CR5</version> 
     <extensions>true</extensions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

该业务规则项目本身纳入部署到Wildfly.This实际的WAR在应用程序中使用的依赖poms:

 <dependency> 
      <groupId>com.sial.rules</groupId> 
      <artifactId>sial-rules</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 

我最近发现额外的依赖打破了我们的Arquillia单元测试。由于Arquillian有一个完全不同的maven集成,我最好的猜测是这是KIE中的一个bug。它与BZ1098018

非常类似,当代码实际调用kie-ci时,添加这个额外的依赖关系“修复”了问题,但是这种依赖性导致我们的Arquillian测试无法部署。

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-aether-provider</artifactId> 
    <version>3.0.5</version> 
</dependency> 

回答

0

的问题是,纪伊-CI包括行家(3.0.5)的旧版本比确实的Arquillian(3.1.1)具体行家-乙醚提供商。 Arquillian(真正的ShrinkWrap)真的想使用更新的版本。

我试图强制pom.xml中的3.0.5版本,但得到解析器的问题。 这是错误: java.lang.UnsupportedOperationException:无法启动Aether存储库系统。确保你运行的是Maven 3.1.0或更新的版本。

所以基本上乃纪伊6.1.0.Final是的Arquillian 1.1.5.Final不相容

我将要看到,如果纪伊6.2.0CR3版本将工作

+0

我能够强制Arquillian使用旧的Maven版本 – whomer 2015-01-20 22:06:48

0

你不应该需要申报额外的Maven,以太网和其他依赖手动。 kie-ci应该过渡地依赖于它所需要的一切。如果你看看kie-ci https://github.com/droolsjbpm/drools/blob/6.1.0.Final/kie-ci/pom.xml的pom.xml,你添加的依赖关系也会在那里列出,所以Maven会自动解析它们。

这似乎是一些奇怪的错误或错误配置。我相信你在你的pom如下:

<dependency> <groupId>org.kie</groupId> <artifactId>kie-ci</artifactId> <version>6.1.0.Final</version> </dependency>

你能张贴你的整个POM?

+0

Maven没有自动解决它们。我必须明确地添加它们。我必须排除netty,因为netty在Wildfly中的应用程序不能很好地运行。 – whomer 2014-11-03 18:13:02

+0

在这种情况下,它似乎不是一个与kie-ci本身有关的问题,而是与战争构建有关。 kie-ci POM显然依赖于那些maven和aether文物,所以maven应该能够通过传递来解决它们。有几个例子说明了这一点,所以这可能是你身边的某种配置问题?如果可以的话,请发布你的整个pom.xml文件。没有这个,很难猜测到底是什么错误。 – 2014-11-03 18:37:09

+0

我们构建3个不同的应用程序,两个使用一组规则,而第三个使用另一个。我编辑了这个问题来添加我们业务规则项目的完整pom.xml。这个项目是其他项目的依赖项。 我们使用CDI在其他项目中注入KieSessions。应用程序之战仅包含业务规则项目依赖关系。所有这三个项目都有解决kie-ci传递依赖的问题。 – whomer 2014-11-03 19:45:45

相关问题