当前位置: 首页 > 知识库问答 >
问题:

Drools Kie Scanner 6.3.0最终抛出ProvisionException(未找到RepositorySystem)

艾自强
2023-03-14

我刚开始使用Drools,并试图将其与我的Spark流媒体工作相结合。我使用Drools6.3.0.final和kie-ci,这样我就可以从spark工作中远程拉出我的kJar,如果有新的版本,就可以使用kie扫描器进行更新。然而,我遇到了以下异常:

016-04-27 10:22:32,360 WARN  [streaming-job-executor-0] Sisu (Logs.java:warn(394)) - Error injecting: org.apache.maven.execution.DefaultMavenExecutionRequestPopulator
com.google.inject.ProvisionException: Guice provision errors:

1) No implementation for org.apache.maven.repository.RepositorySystem was bound.
while locating org.apache.maven.execution.DefaultMavenExecutionRequestPopulator

1 error
at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:974)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1000)
at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:84)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:52)
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:70)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:100)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.onProvision(PlexusLifecycleManager.java:133)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:108)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:55)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:68)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1018)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:59)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:965)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1011)
at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:961)
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:82)
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:260)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:252)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:246)
at org.kie.scanner.embedder.PlexusComponentProvider.lookup(PlexusComponentProvider.java:42)
at org.kie.scanner.embedder.MavenEmbedder.buildMavenExecutionRequest(MavenEmbedder.java:111)
at org.kie.scanner.embedder.MavenEmbedder.<init>(MavenEmbedder.java:84)
at org.kie.scanner.embedder.MavenEmbedder.<init>(MavenEmbedder.java:75)
at org.kie.scanner.embedder.MavenEmbedder.<init>(MavenEmbedder.java:69)
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:55)
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:49)
at org.kie.scanner.ArtifactResolver.getResolverFor(ArtifactResolver.java:127)
at org.kie.scanner.ArtifactResolver.getResolverFor(ArtifactResolver.java:90)
at org.kie.scanner.KieRepositoryScannerImpl.setKieContainer(KieRepositoryScannerImpl.java:88)
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieScanner(KieServicesImpl.java:139)

我已经在我的settings.xml中设置了远程存储库,在这里我正确地运行spark,因为当它正确地创建KieContainer时,它会拉出最新的jar。只有当我出于某种原因包括KieScanner时,它才会失败。

KieServices ks = KieServices.Factory.get();
ReleaseId releaseId = ks.newReleaseId("test", "test", "LATEST");
KieContainer kieContainer = ks.newKieContainer(releaseId);
KieSession kSession = kieContainer.newKieSession();

KieScanner kScanner = ks.newKieScanner(kieContainer);
kScanner.scanNow();
kSession.fireAllRules();
kSession.dispose();

(java.lang.nosuchmethoderror:com.google.inject.binder.BindListener)

有人知道为什么或者我怎么能解决这个问题吗?

共有1个答案

富建章
2023-03-14

我也遇到过类似的问题,为Flink生成一个uber罐子。这是因为我的maven shade配置不完整,来自不同JAR的Meta-inf/**配置文件被覆盖。通过在Maven shade配置中添加以下变形金刚来解决这个问题:

<transformer implementation="org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
    <resource>META-INF/sisu/javax.inject.Named</resource>
</transformer>
 类似资料:
  • 问题内容: 在Grails中,我可以在 BootStrap的 内存dataSource中创建到H2的域对象,并使结果恢复正常,但是一旦应用启动(例如,从GSP或控制器查询),然后尝试运行查询,我得到以下信息: 我已经清理了构建 运行Grails 2.0.0 我有多个SQL Server DB的数据源,这些数据源仅对StoredProcedures进行了调用,现在发现了一个用例,它使用良好的旧Dom

  • 我正在尝试用NLTK中的Malt Parser解析句子。当我执行时,它给出了一个错误,退出代码为1。我在终端上执行了java命令,它给出了“未找到”类异常,我不明白现在是怎么了? java-Xmx1024m-jar/usr/local/bin/malt。jar-w/home/abc/maltparser-1.7.2-c engmalt.linear-1.1-i/home/abc/martparse

  • 问题内容: 我在Windows 7盒子中以angular-fullstack开始了angular应用。我安装了带有-g选项的npm软件包,包括grunt-bower- install。我首先通过运行创建了应用程序 yo角全栈应用程序名称 在创建应用程序期间也不例外。成功创建应用程序后,我尝试使用 发牢骚 期望服务器运行。但是“发脾气”失败了 运行“ bower-install:app”(bower

  • 当我试图在Android Studio上运行用Kotlin编写的espresso测试时(直到3.2 Canary 9),我得到的错误是:Process finished with exit code 1 Class not found:“com.myproject.directoryofwinning.verifyappisawesometest”空测试套件。 奇怪的是,同一项目中的Java测试没

  • 问题内容: 我试图在我的代码中抛出一个异常,如下所示: 但是,当我在NetBeans中进行构建时,会出现以下错误: 我需要导入什么东西吗?我拼错了吗?我确定我一定在做些愚蠢的事情:-( 问题答案: 您需要在那里。它正在创建一个实例并抛出它,而不是调用方法。

  • 我试图从方法中抛出异常,但当我编译下面的代码时 编译错误 发射装置。java:14:错误:找不到符号静态void getError()抛出^myException{ 符号:类myException 位置:类启动器 它说了些什么,它无法理解什么是