我有一个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)
答案 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依赖项之前