2014-12-19 4 views
1

Прежде всего я имею в виду этот вопрос (LINK), который не помог мне, потому что тогда версии фреймворков были ниже, поэтому я начинаю новый вопрос.Исключение Drools в новой версии Grails

Итак, я использую рамку Grails 2.4.3 и пытаюсь использовать внутри нее механизм правил Drools. Версия Java 1.0.8_20, а версия версии 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-ядра/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 
+0

Возможна ли полная справка? – laune

+0

Возможно, это не очень хорошая идея, чтобы перейти от Drools 5.5 до 6.x, не убедившись, что все совместимо. В этой другой ссылке вы говорите, что используете 6.1.0-Final, но здесь вы ссылаетесь на 5.5.0.Final runtimes. Обязательно определите фактическую версию с помощью своего stackdump. – laune

+0

Где эта строка «KnowledgeBuilder knowledgeBuilder = ...»? – laune

ответ

2

ком/ВС/инструменты/XJC/Options.class находится в банке JAXB-xjc.jar, который поставляется с распределением JAXB. Обычно javax.xml.bind и инструмент xjc доступны через JDK и двоичные файлы Java. Но, если какое-либо приложение должно вызвать компилятор XML Schema через свой API, должны быть доступны отдельные классы, содержащиеся в этой банке.

Смежные вопросы