2

サーバーにdrools(5.4.0.CR1)を統合するMavengwtプロジェクトがあります。

ここでの問題は、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サーバーは実行されません(他の依存関係によりサーバーは実行されますが、開発モードは実行されません)が、開発モードは読み込まれません:

   [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が次のように壊れている除外を削除すると、droolsはそれを見つけることができないと文句を言いません。

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 は悪です:)。これは、Googleコードの問題です(関連する問題がいくつかあります)

とにかく、ここに修正があります:

  <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 - Run Configurations ...」でクラスパスを並べ替え、GWT SDK を Maven 依存関係の前に配置することです。

于 2014-07-08T13:31:41.023 に答える