Tôi vừa cài đặt Drools plug-in
trong Eclipse (phiên bản 3.5.2) và tôi đang cố gắng chạy "Hello Thế giới "ví dụ đi kèm với trình cắm thêm.Không thể chạy ví dụ Drools "Hello World" trong Eclipse: ngoại lệ thời gian chạy org.drools.RuntimeDroolsException: Không thể tải phương ngữ
Khi tôi chạy mã, tôi nhận được runtime error
với stack trace sau:
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
Dưới đây là một số mã Java có liên quan:
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;
}
Kris - Cảm ơn bạn đã cung cấp thông tin này! Tôi đã thêm cái lọ bằng tay, và mọi thứ giờ đều chạy hoàn hảo! – user396377
Tôi có lõi JDT trong classpath của mình - nó nằm trong thư mục plugin và là một sự khác biệt phiên bản nhỏ (tôi có org.eclipse.jdt.core_3.6.0.v_A58.jar trong thư mục plugin để thực hiện Eclipse mà tôi đang sử dụng - và trên thực tế, org.eclipse.jdt.core_3.6.1.v_A68_R36x.jar cũng có sẵn bây giờ vì tôi đã cố gắng cập nhật jar trước nhưng điều này phá vỡ Eclipse). Tuy nhiên, tôi vẫn gặp lỗi tương tự: Không thể tải phương ngữ 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration: java' .... etc. –
Tôi đã khắc phục sự cố của mình: về cơ bản là JDT đã vấn đề và tôi cần cập nhật JBoss Drools Core từ menu Cài đặt phần mềm mới trong Trợ giúp trong Helios. Ngoài ra, hãy sử dụng các url JBoss cho phiên bản Eclipse cụ thể của bạn - có thể tìm thấy tại: http://www.jboss.org/tools/download.html. Vấn đề của tôi là tôi đã cố gắng để cài đặt các lọ trực tiếp bởi vì tôi không thể tìm thấy các url được đề cập ở trên nhưng tôi có thể tìm thấy lọ mà tôi nghĩ là chính xác. Oh well .... có được bao bì phù hợp với phiên bản của bạn. –