在新版Grails中流露异常

时间:2014-12-19 16:32:24

标签: java grails groovy drools

首先,我指的是这个问题(LINK)并没有帮助我,因为那时框架版本较低,所以我开始提出新问题。

所以我使用Grails 2.4.3框架并尝试在其中使用Drools规则引擎。 Java版本是1.0.8_20,groovy版本是2.3.9。 BuildConfig中的依赖项是:

runtime 'org.drools:drools-core:5.5.0.Final'
runtime 'org.drools:knowledge-api:5.5.0.Final'

在这行代码中:

KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder()

我得到了这个例外:

Error initializing the application: com/sun/tools/xjc/Options
Caused by ClassNotFoundException: com.sun.tools.xjc.Options

我尝试将drools-core / knowledge-api的版本更改为更高版本(最高为6.0.1.Final),但仍然遇到相同的错误。我也尝试导入这个奇怪的xjc依赖项,正如我在开头提到的帖子中所提到但没有成功。

有谁知道这个问题的解决方案是什么?

Btw完整堆栈跟踪是:

| Error 2014-12-19 18:04:49,851 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener  - Error initializing Grails: com/sun/tools/xjc/Options
Message: com/sun/tools/xjc/Options
    Line | Method
->> 2688 | privateGetDeclaredMethods        in java.lang.Class
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|   1962 | getDeclaredMethods               in     ''
|     46 | getLocked . . . . . . . . . . .  in org.codehaus.groovy.util.LazyReference
|     33 | get                              in     ''
|     46 | doCall . . . . . . . . . . . . . in account.manager.rule.knowledge.Knowledge$_initialize_closure1
|     43 | initialize                       in account.manager.rule.knowledge.Knowledge
|     39 | $tt__initialize . . . . . . . .  in account.manager.RuleSyncService
|     24 | doCall                           in BootStrap$_closure1
|    327 | evaluateEnvironmentSpecificBlock in grails.util.Environment
|    320 | executeForEnvironment            in     ''
|    296 | executeForCurrentEnvironment . . in     ''
|    266 | run                              in java.util.concurrent.FutureTask
|   1142 | runWorker . . . . . . . . . . .  in java.util.concurrent.ThreadPoolExecutor
|    617 | run                              in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run . . . . . . . . . . . . . .  in java.lang.Thread
Caused by ClassNotFoundException: com.sun.tools.xjc.Options

1 个答案:

答案 0 :(得分:2)

com / sun / tools / xjc / Options.class位于JAXB发行版附带的jar jaxb-xjc.jar中。通常,javax.xml.bind和xjc工具可通过JDK和Java二进制文件获得。但是,如果某些应用程序需要通过其API调用XML Schema编译器,则该jar中包含的各个类必须可用。