我刚刚开始学习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();
}
}
答案 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>