2

我有一个 maven gwt 项目,它应该在服务器上集成 drools (5.4.0.CR1)。

这里的问题是,drools 似乎需要 drools-pipline 作为依赖项才能找到类:

org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl

添加后会使流口水正确运行但会破坏 GWT ......

我读过一篇描述类似问题的文章,但旧版本说这是因为“org.eclipse.jdt”的不同版本,可以通过添加来修复:

<exclusions>
    <exclusion>
        <groupId>org.eclipse.jdt.core.compiler</groupId>
        <artifactId>ecj</artifactId>
    </exclusion>
</exclusions>

但这不起作用...

有趣的是,当从 Eclipse 中检查时,我发现这个类实际上存在于 drools-compiler jar 中,看起来与已经引用的 pom "drools-multiproject" 相同。

非常感谢任何帮助..非常感谢。


更新1:

这是我在启用“drools-pipline”的依赖项时遇到的错误。并且内部码头服务器不运行(其他依赖项导致服务器运行但不是开发模式)但它不加载开发模式:

   [INFO] log4j: reset attribute= "false".
   [INFO] log4j: Threshold ="null".
   [INFO] log4j: Retreiving an instance of org.apache.log4j.Logger.
   [INFO] log4j: Setting [org.drools.grid] additivity to [true].
   [INFO] log4j: Level value for org.drools.grid is  [INFO].
   [INFO] log4j: org.drools.grid level set to INFO
   [INFO] log4j: Level value for root is  [ERROR].
   [INFO] log4j: root level set to ERROR
   [INFO] log4j: Class name: [org.apache.log4j.ConsoleAppender]
   [INFO] log4j: Setting property [target] to [System.out].
   [INFO] log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
   [INFO] log4j: Setting property [conversionPattern] to [%-4r %-5p %x- %m%n].
   [INFO] log4j: Adding appender named [console] to category [root].

更新 2:

在查看 drools-pipline pom 时,我发现它被描述为 drools-camel 的遗留问题,所以我用 drools-camel 替换了它......现在事情加载正确,但是如果我使用上面放在 drools-camel 依赖项上的排除GWT 工作但流口水不会抱怨它找不到它,如果我删除排除 GWT 中断:

java.lang.NoSuchFieldError: warningThreshold
at com.google.gwt.dev.javac.JdtCompiler.getCompilerOptions(JdtCompiler.java:400)
at com.google.gwt.dev.javac.JdtCompiler$CompilerImpl.<init>(JdtCompiler.java:228)
at com.google.gwt.dev.javac.JdtCompiler.doCompile(JdtCompiler.java:689)
at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater.compile(CompilationStateBuilder.java:215)
at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:406)
at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:299)
at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:325)
at com.google.gwt.dev.DevModeBase$UiBrowserWidgetHostImpl.createModuleSpaceHost(DevModeBase.java:105)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:190)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
at java.lang.Thread.run(Thread.java:662)
4

2 回答 2

3

我们在guvnor也遇到了这个问题。这是因为 GWT 编译器未能将其编译器和编译类路径分开。更糟糕的是,gwt-dev 遮蔽了几个 jar(是的,gwt-dev jar 是邪恶的:)。这是谷歌代码中的一个问题(有几个相关问题)

无论如何,这是修复:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <version>2.3.0</version>
    <configuration>
      ...
      <gwtSdkFirstInClasspath>true</gwtSdkFirstInClasspath><!-- The GWT compiler must the correct JDT version -->
      ...
    </configuration>
于 2012-04-18T16:25:03.143 回答
0

我有同样的问题,<gwtSdkFirstInClasspath>true</gwtSdkFirstInClasspath>在配置中使用的解决方案对我不起作用。我所做的是在“Eclipse - 运行配置...”中重新排序类路径,将 GWT SDK 放在 Maven 依赖项之前

于 2014-07-08T13:31:41.023 回答