Отсутствует поддержка Java 7 в Drools («RuntimeDroolsException: значение« 1.7 не является допустимым языковым уровнем ») - PullRequest
5 голосов
/ 20 октября 2011

Пока я перемещаю свой проект в java7, Drools начинает генерировать исключение RuntimeDroolsException во время процесса инициализации. Когда я копаю дальше, я обнаружил, что это происходит, когда он проверяет Java-диалект.

Проблема в том, что Drools 5.1.1 сравнивает системное свойство "java.version" с LANGUAGE_LEVELS для его проверки. LANGUAGE_LEVELS - это жестко закодированный список версий Java до 1.6

In org.drools.rule.builder.dialect.java.JavaDialectConfiguration,
public static final String[]        LANGUAGE_LEVELS = new String[]{"1.5", "1.6"};

Я не хотел менять исходный код. Поэтому я добавил ниже в качестве обходного пути для обхода проверки Java диалект.

Properties properties = new Properties();
properties.setProperty( "drools.dialect.java.compiler.lnglevel","1.6" );
PackageBuilderConfiguration cfg =
new PackageBuilderConfiguration( properties );
KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(cfg);

Есть ли лучший способ сделать это, кроме редактирования исходного кода?

P.S .: Drools 5.1.1 является последней производственной версией drools

Ответы [ 4 ]

6 голосов
/ 01 марта 2013

Если вы все еще хотите использовать Drools 5.1.1 (переход на более высокую версию не всегда прост, поскольку правила больше не компилируются), это может быть другой, непрограммный обходной путь.

В META-INF/drools.packagebuilder.confВы можете добавить эти свойства:

 drools.dialect.java.compiler = ECLIPSE 
 drools.dialect.java.lngLevel = 1.6 
 drools.dialect.java.compiler.lnglevel = 1.6
3 голосов
/ 20 октября 2011

Это исправлено в версии 5.2.1.FINAL

https://issues.jboss.org/browse/JBRULES-3163

0 голосов
/ 25 января 2015

Я решил вышеупомянутую проблему, заменив свой ссылочный файл drools-complier.jar на версию 5.4.0.Final. Я пробовал более ранние выпуски этого фляги, но та же самая ошибка привела. Эту обновленную банку можно загрузить с репозитория drools maven

0 голосов
/ 20 октября 2011

Лучшим способом было бы отправить патч в сам проект и помочь им также поддерживать Java 7, а затем обновить его до этой версии, когда она станет доступной.

...