Я использую правила Drools (5.5.0) в своем проекте Java (управляемый с помощью maven 2.2.1). Он отлично работает в Java 6 (1.6.0_45), но когда я перехожу на Java 7 (1.7.0_51) и выполняю сборку, определенные правила выдают ошибку компиляции правила, например следующую:
Rule Compilation error : [Rule name='SampleRuleName']
com/sample/event/rules/simple/Rule_SampleRuleName46467274.java (2:486) : Syntax error, static imports are only available if source level is 5.0
com/sample/event/rules/simple/Rule_SampleRuleName46467274.java (2:500) : The import com.sample.event.rules.simple.TransformEvent.transformEvent cannot be resolved
com/sample/event/rules/simple/Rule_SampleRuleName46467274.java (7:1082) : The method transformEvent(TransformedEventCallBackHandler, EventTemplate, FirmwareEvent) is undefined for the type Rule_SampleRuleName46467274
Ошибка «статический импорт доступен только в том случае, если уровень исходного кода равен 5.0» предполагает, что компилятор drools устанавливает уровень исходного кода меньше 5, но зачем ему это делать? Я обновил свой JAVA_HOME и pom.xml. Оттуда он должен забирать исходный уровень Java, верно?
2 ответа
Оказывается, Drools использует компилятор Eclipse JDT для компиляции правил. Обновление версии JDT помогло. Однако, если это не поможет, обновление версии Drools также может помочь.
При обновлении до Drools 6 эта проблема исправлена. Недавно у нас была аналогичная проблема для Java 8 с Drools 6.0, и она исправлена в 6.1 (и в последних версиях 6.0 тоже).
Причина появления java 8 заключалась в том, что слюни распознают версии java 1.6, 1.7, но не 1.8, в этот момент по умолчанию используется 1.6. Я подозреваю, что слюни 5.5 (которая устарела) имели ту же проблему для java 7.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
pom.xml
жестко запрограммировал зависимостьorg.eclipse.jdt.core.compiler:ecj
от версии4.3.1
. После обновления drools до новейшей версии7.13.0.Final
я получил аналогичную ошибку (при первом запуске «кода drools», странно). После удаления жестко закодированной зависимостиorg.eclipse.jdt.core.compiler:ecj
в моемpom.xml
(просто позволяя слюням решать, какую версию ecj, т.е.4.6.1
, использовать), эта ошибка исправлена.