如何修复“ NoClassDefFoundError KieServices.Factory”

时间:2019-01-22 09:08:19

标签: java maven drools

我刚刚开始学习JBoss Drools。因此,我从《 Drools Jboss Rules 5.X》一书中提出了一些应用程序。正如我很快注意到的那样,Drools 5.X的初始化已被取消,我使用KieServices将代码重写为Drools 6.2+。完成项目的构建没有错误。但是运行jar我总是遇到NoClassDefFoundError:org / kie / api / KieServices $ Factory。然后,我从一开始就编写了一个代码,其中什么都没有,只是初始化KieServices并得到了相同的错误。 Stackoverflow的所有建议和其他讨论都没有帮助。参见下面的代码(几乎没有内容)和Maven文件。有人有解决方案吗?

初始化了KieServices的主类

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXX-XX"></script>
<script>

// GTAG initialization
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments)};
  gtag('js', new Date());

// Setting up trackers
  gtag('config', 'UA-XXXXXXXX-XX');
  gtag('config', 'AW-YYYYYYYYY');
  gtag('config', 'AW-YYYYYYYYY/X_XXXXXXXXXXXXXXXXXX', {
        'phone_conversion_number': '(XXX) XXX-XXXX'
  });

</script>

这是我的Maven项目

import org.kie.api.KieServices;

public class App {
    public static void main(String[] args) {
        System.out.println("start");
        KieServices ks = KieServices.Factory.get();
    }
}

1 个答案:

答案 0 :(得分:0)

最后,我添加了一个Maven Shade插件来创建一个Uber jar。我保证所有类都在运行时存在。有用。也许有更好的解决方案,请留下答案。 Maven项目现在看起来像这样:

<properties>
    <drools.version>6.3.0.Final</drools.version>
    <java.version>1.8</java.version>
</properties>


<dependencies>

    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-core</artifactId>
        <version>${drools.version}</version>
    </dependency>


    <dependency>

也许对其他人有帮助。

        <groupId>org.drools</groupId>
        <artifactId>drools-compiler</artifactId>
        <version>${drools.version}</version>
    </dependency>

    <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-api</artifactId>
        <version>${drools.version}</version>
    </dependency>

    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>

</dependencies>

<build>
    <plugins>

        <plugin>
            <groupId>org.kie</groupId>
            <artifactId>kie-maven-plugin</artifactId>
            <version>${drools.version}</version>
            <extensions>true</extensions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>


        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.1</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>App</mainClass>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>