流氓与GET的maven依赖冲突

时间:2012-04-18 14:49:17

标签: gwt maven drools

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

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

org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl

添加时会使drools正常运行但会破坏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”依赖项时得到的错误,而且内部jetty服务器没有运行(其他依赖项导致服务器运行而不是dev模式)但是它没有加载开发模式:

   [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有效,但是drools没有抱怨它无法找到它,如果我删除了排除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)

2 个答案:

答案 0 :(得分:3)

我们在guvnor也遇到了这个问题。这是因为GWT编译器无法将它的编译器和编译类路径分开。更糟糕的是,gwt-dev遮住了几个罐子(是的,gwt-dev jar是邪恶的:)。 Here's an issue at google code for it (there are several related issue)

无论如何,这是修复:

  <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>

答案 1 :(得分:0)

我遇到了同样的问题,在配置中使用<gwtSdkFirstInClasspath>true</gwtSdkFirstInClasspath>的解决方案对我不起作用。我所做的是重新排序&#34; Eclipse - 运行配置......&#34;中的Classpath,将GWT SDK放在Maven依赖项之前