2010-07-21 10 views
5

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; 
} 

Trả lời

7

Bạn đang thiếu nhật thực JDT lõi jar trong classpath của bạn. Nếu bạn không sử dụng thùng chứa classpath Drools hoặc nếu bạn tự tạo thời gian chạy của riêng mình, hãy đảm bảo rằng jar là một phần của đường dẫn classpath hoặc thư mục thời gian chạy của bạn. Nếu bạn đang sử dụng thùng chứa classpath Drools và tạo ra một thời gian chạy mặc định, và jar lõi JDT không có ở đó, hãy đảm bảo sử dụng một phiên bản gần đây của plugin hỗ trợ Eclipse 3.5.2. Tất nhiên bạn cũng có thể thêm jar lõi JDT bằng tay và tạo lại thời gian chạy của bạn.

Thông tin thêm về runtimes có thể được tìm thấy tại http://download.jboss.org/drools/release/5.1.1.34858.FINAL/drools-5.1.1-docs.zip và mở ra drools-5.1.1-docs.zip\drools-flow\html\ch.Drools_Eclipse_IDE_Features.html

+0

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

+0

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. –

+0

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. –

1

Nếu bạn đang sử dụng một JDK 1.7 trở lên, bạn sẽ phải thiết lập một tham số trước khi tạo JVM vì Drools sử dụng trên JNI4NET mẫu là phiên bản 5.1 và nó không hoạt động trên JDK 1.7 trở lên.

Hãy thử sử dụng dòng này trước khi tạo JVM:

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

Vì vậy, cuối cùng tôi đã bắt đầu kết thúc.

tôi đã làm như sau (tháng Tư, 2014)

  1. Bắt đầu với sạch cài đặt của Eclipse Kepler
  2. Đến Eclipse Marketplace và tìm kiếm cho "JBoss Developer Studio (Kepler)" và sau đó cài đặt: "Đỏ Hat JBoss Developer Studio (Kepler) 7.1.1.GA "(Phiên bản của bạn có thể thay đổi)
  3. Khởi động lại Eclipse
  4. Vào Eclipse Marketplace và tìm" JBoss Developer Studio (Kepler) "và sau đó cài đặt:" JBoss Tools (Kepler) 4.1.2.Final "(Phiên bản của bạn có thể thay đổi)
  5. Khởi động lại Eclipse.
  6. Cài đặt "ống dẫn nước". Vào Eclipse Menu và sau đó "Help"/"Install New Software" và thêm URL bên dưới. Drools_UpdateSite - http://download.jboss.org/drools/release/6.0.0.Final/org.drools.updatesite/ Tôi đã cài đặt mọi tùy chọn.
  7. Khởi động lại Eclipse.
  8. Chuyển đến Dự án mới và thêm "Dự án Drools" mới.

Sau đó, tôi đã có thể chạy các giọt nước "hello world".

Tôi cũng đã thêm:

Chuyển đến Menu Eclipse và sau đó "Help"/"Install New Software" và thêm URL bên dưới.

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

và cài đặt

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

tôi phải đối mặt với cùng một vấn đề. Như đã nêu trong các câu trả lời khác rằng nếu thời gian chạy được tạo thủ công (như trong trường hợp của tôi) thì bạn cần phải thêm jar lõi JDT nhật thực trong đường dẫn lớp của bạn. đây là liên kết tải xuống cho jar->http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm Việc thêm này vào đường dẫn lớp đã giải quyết được sự cố của tôi.