在 KIE 执行服务器中创建求解器异常

Exception creating solver in KIE execution server

我正在尝试将我的 kjar 部署到 KIE 执行服务器,但在 URL:

上使用 PUT 创建求解器 'taskPlanningSolver' 时出现异常
http://localhost:8080/kie-server/services/rest/server/containers/taskplanning1/solvers/taskPlanningSolver

这是我拥有的:

一个。我在 tomcat(windows) 上有一个 KIE 执行服务器 运行。它支持 BRMS 和 BPM。
B. 我有一个 Maven 项目(使用 optaplanner),它安装在我本地的 Maven 仓库中。
C. 我使用 PUT on:

在 KIE 服务器中成功创建了一个容器
http://localhost:8080/kie-server/services/rest/server/containers/taskplanning1

与 body:

<kie-container container-id="taskplanning1">
  <release-id>
    <group-id>com.kairos.planning</group-id>
    <artifact-id>task-planning</artifact-id>
    <version>1.0.1-SNAPSHOT</version>
  </release-id>
</kie-container>

我需要帮助创建一个抛出异常的求解器:

"Unexpected error during processing: sun.reflect.annotation.TypeNotPresentExceptionProxy"

备注: 我确实在 maven repo 中安装了 jar 中的 kmodule.xml 及其内部 META-INF 并且它的内容仅为:

2017-08-30 11:56:07,977 ERROR [org.kie.server.remote.rest.optaplanner.SolverResource] (default task-3) Unexpected error creating solver 'taskPlanningSolver' on container 'taskplanning2': sun.reflect.annotation.TypeNotPresentExceptionProxy: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)
at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
at java.lang.Class.createAnnotationData(Class.java:3521)
at java.lang.Class.annotationData(Class.java:3510)
at java.lang.Class.getAnnotation(Class.java:3415)
at com.thoughtworks.xstream.mapper.AnnotationMapper$UnprocessedTypesSet.add(AnnotationMapper.java:614)
at com.thoughtworks.xstream.mapper.AnnotationMapper$UnprocessedTypesSet.add(AnnotationMapper.java:599)
at com.thoughtworks.xstream.mapper.AnnotationMapper.processAnnotations(AnnotationMapper.java:162)
at com.thoughtworks.xstream.XStream.processAnnotations(XStream.java:2036)
at com.thoughtworks.xstream.XStream.processAnnotations(XStream.java:2047)
at org.kie.server.api.marshalling.xstream.XStreamMarshaller.configureMarshaller(XStreamMarshaller.java:186)
at org.kie.server.api.marshalling.xstream.XStreamMarshaller.<init>(XStreamMarshaller.java:103)
at org.kie.server.api.marshalling.BaseMarshallerBuilder.build(BaseMarshallerBuilder.java:37)
at org.kie.server.api.marshalling.MarshallerFactory.getMarshaller(MarshallerFactory.java:52)
at org.kie.server.services.impl.KieContainerInstanceImpl.getMarshaller(KieContainerInstanceImpl.java:175)

我在创建容器时也看到很多异常,但容器创建成功。所有错误都是 NoClassDefFoundError,即使我将所有依赖项添加到我的项目的 pom 中,我仍然得到一个新的 class 导致 NoClassDefFoundError。

我也没有将 kjar 部署到 kie 执行服务器的好指南。我将在成功测试后创建一个。如果可能请帮忙。提前致谢。

Kie 执行服务器已经有 optaplanner jar,它有所有需要的依赖项,包括所有日志依赖项。因此,您需要确保项目的 pom 具有零运行时依赖性。您项目中需要的所有依赖项都应标记为 provided 范围,例如:

        <dependency>
            <groupId>org.optaplanner</groupId>
            <artifactId>optaplanner-persistence-common</artifactId>
            <version>${version.optaplanner.bom}</version>
            <scope>provided</scope>
        </dependency>