2010-07-21 2 views
5

Я только что установил Drools plug-in в Eclipse (версия 3.5.2), и я пытаюсь запустить «Hello World ", который поставляется с плагином.Невозможно запустить пример «Hello World» Drools в Eclipse: исключение среды выполнения org.drools.RuntimeDroolsException: невозможно загрузить диалект

Когда я запускаю код, я получаю runtime error со следующей трассировки стека:

org.drools.RuntimeDroolsException: Unable to load dialect 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.rule.builder.dialect.java.JavaDialectConfiguration' 
at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:274) 
at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:259) 
at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:176) 
at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:153) 
at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:242) 
at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:142) 
at org.drools.builder.impl.KnowledgeBuilderProviderImpl.newKnowledgeBuilder(KnowledgeBuilderProviderImpl.java:29) 
at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:29) 
at com.sample.DroolsTest.readKnowledgeBase(DroolsTest.java:39) 
at com.sample.DroolsTest.main(DroolsTest.java:23) 
Caused by: java.lang.RuntimeException: **The Eclipse JDT Core jar is not in the classpath** 
at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:94) 
at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:55) 
at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:270) 
... 9 more 

Вот некоторые из соответствующего кода Java:

public static final void main(String[] args) { 
    try { 
     // load up the knowledge base 
     KnowledgeBase kbase = readKnowledgeBase(); 
    } 
} 

private static KnowledgeBase readKnowledgeBase() throws Exception { 
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 
    kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL); 
    KnowledgeBuilderErrors errors = kbuilder.getErrors(); 
    if (errors.size() > 0) { 
     for (KnowledgeBuilderError error : errors) { 
      System.err.println(error); 
     } 
     throw new IllegalArgumentException("Could not parse knowledge."); 
    } 
    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); 
    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); 
    return kbase; 
} 

ответ

7

Вы пропустили затмение JDT ядро в вашем пути к классам. Если вы не используете контейнер класса Drools или вручную создали собственное время выполнения, убедитесь, что jar является частью вашего каталога классов или среды выполнения. Если вы используете контейнер пути Drools и генерируете стандартную среду выполнения, а ядро ​​JDT отсутствует, убедитесь, что используете последнюю версию плагина, поддерживающего Eclipse 3.5.2. Конечно, вы можете просто добавить ядро ​​JDT вручную и воссоздать время выполнения.

Более подробную информацию о времени работы можно найти на http://download.jboss.org/drools/release/5.1.1.34858.FINAL/drools-5.1.1-docs.zip и открыть drools-5.1.1-docs.zip\drools-flow\html\ch.Drools_Eclipse_IDE_Features.html

+0

Kris - Спасибо за эту информацию! Я добавил банку вручную, и теперь все отлично! – user396377

+0

У меня есть ядро ​​JDT в моем пути к классам - оно находится в каталоге плагина и является незначительной версией (у меня есть org.eclipse.jdt.core_3.6.0.v_A58.jar в каталоге плагина для реализации Eclipse, который я использую - и на самом деле org.eclipse.jdt.core_3.6.1.v_A68_R36x.jar также существует сейчас, потому что я пытался обновить предыдущую банку, но это нарушает Eclipse). Тем не менее, я по-прежнему получаю ту же ошибку: Невозможно загрузить диалект 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration: java' .... и т. Д. –

+0

Я исправил свою проблему: это в основном то, что JDT проблемы, и мне нужно было обновить JBoss Drools Core в меню «Установить новое программное обеспечение» в разделе «Справка» в Helios. Кроме того, используйте URL-адреса JBoss для вашей конкретной версии Eclipse - это можно найти по адресу: http://www.jboss.org/tools/download.html. Моя проблема заключалась в том, что я пытался установить банки непосредственно, потому что я не мог найти вышеупомянутый URL-адрес, но я мог найти банки, которые, как я думал, были правильными. О, хорошо ... получите правильную упаковку для своей версии. –

1

Если вы используете JDK 1.7 или выше, вы установили параметр, прежде чем создавать JVM, потому что Drools используется на JNI4NET Sample является версия 5.1 и он не работает на JDK 1.7 или более.

Попробуйте использовать эту строку перед создавать JVM:

var bridgeSetup = new BridgeSetup(); 
// ... 
bridgeSetup.AddJVMOption("-Ddrools.dialect.java.compiler.lnglevel", "1.6"); 
// ... 
Bridge.CreateJVM(bridgeSetup); 
1

Так что я, наконец, начал снова.

Я сделал следующее (апрель, 2014)

  1. Начиная с чистой установки Eclipse, Kepler
  2. Перейти к Eclipse, Marketplace и искать "JBoss Developer Studio (Kepler)", а затем установить: «Красный Hat JBoss Developer Studio (Kepler) 7.1.1.GA "(Ваша версия может отличаться)
  3. перезапуска Eclipse,
  4. Перейти к Eclipse, Marketplace и искать "JBoss Developer Studio (Kepler)", а затем установить:" JBoss Tools (Kepler) 4.1.2.Final "(Ваша версия может отличаться)
  5. Restart Eclipse.
  6. Установите «drools». Перейдите в меню Eclipse, а затем «Справка»/«Установить новое программное обеспечение» и добавьте URL-адрес ниже. Drools_UpdateSite - http://download.jboss.org/drools/release/6.0.0.Final/org.drools.updatesite/ Я установил каждый вариант.
  7. Restart Eclipse.
  8. Перейдите в New-Project и добавьте новый проект «Drools».

Тогда я смог запустить слюни «мир привет».

Я также добавил:

Перейти к Затмения меню, а затем «Help»/«Установить новое программное обеспечение» и добавьте ниже URL.

http://download.eclipse.org/technology/m2e/releases 

и установили

"m2e - Maven Integration for Eclipse" 
and "m2e - slf4j over logback logging (Optional)" 
0

я столкнулся с той же проблемой. Как указано в других ответах, если время выполнения создается вручную (как в моем случае), то вам нужно добавить ядро ​​ядра JQT eclipse в ваш путь к классам. вот ссылка для загрузки jar->http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm Добавление этого метода в classpath решает мою проблему.