Невозможно запустить пример Drools "Hello World" в Eclipse: исключение времени выполнения org.drools.RuntimeDroolsException: Невозможно загрузить диалект - PullRequest
7 голосов
/ 21 июля 2010

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

Когда я запускаю код, я получаю 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;
}

Ответы [ 6 ]

7 голосов
/ 21 июля 2010

Вам не хватает основной банки JDT eclipse в вашем classpath. Если вы не используете контейнер пути к классу Drools или если вы вручную создали собственную среду выполнения, убедитесь, что jar является частью вашего каталога classpath или среды выполнения. Если вы используете контейнер пути к классу Drools и сгенерировали среду выполнения по умолчанию, а jar-файл ядра JDT отсутствует, обязательно используйте последнюю версию плагина, поддерживающего Eclipse 3.5.2. Конечно, вы также можете просто добавить основной jar-файл 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

2 голосов
/ 30 ноября 2016

Это обычная проблема, просто включите Jar-файл eclipse в ваш путь к классу, и он решит эту проблему.Вы можете добавить банку отсюда: http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm

1 голос
/ 07 июля 2015

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

1 голос
/ 22 апреля 2014

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

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

  1. Начиная с чистой установки Eclipse Kepler
  2. Перейдите на Eclipse Marketplace и найдите «JBoss Developer Studio (Kepler)», а затем установите: «Red 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. Перезапустите Eclipse.
  6. Установить "слюни". Перейдите в меню Eclipse, а затем «Справка» / «Установить новое программное обеспечение» и добавьте приведенный ниже URL-адрес. Drools_UpdateSite - http://download.jboss.org/drools/release/6.0.0.Final/org.drools.updatesite/ Я установил каждую опцию.
  7. Перезапустите Eclipse.
  8. Перейдите в New-Project и добавьте новый «Проект Drools».

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

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

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

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

и установлено

"m2e - Maven Integration for Eclipse"
and "m2e - slf4j over logback logging (Optional)"
1 голос
/ 09 марта 2014

Если вы используете JDK 1.7 или более позднюю версию, вы должны будете установить параметр перед созданием JVM, поскольку Drools, используемый в образце JNI4NET, имеет версию 5.1 и не работает в JDK 1.7 или более поздней версии.используйте эту строку перед созданием JVM:

var bridgeSetup = new BridgeSetup();
// ... 
bridgeSetup.AddJVMOption("-Ddrools.dialect.java.compiler.lnglevel", "1.6");
// ...
Bridge.CreateJVM(bridgeSetup);
0 голосов
/ 06 ноября 2018

http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm основной файл JDT затмения в вашем пути к классам.

enter image description here

Убедитесь, что это должен быть файл, а не почтовый файл.

...