Drools的;在另一台计算机

时间:2015-11-13 10:53:20

标签: java jar drools drools-guvnor

我正在尝试在另一台计算机上运行可执行JAR文件,但我遇到了“严重”错误:“无法从myMoapUIProject-1.1.jar加载pom.properties,因为无法找到jarPath。”

如果我在拥有此应用程序的eclipse项目的PC上执行JAR,则不会产生下面链接的错误。

Error produced when executing JAR from Command Line on another computer

错误引用的MySoapUIProject-1.1.jar是我从KieWorkbench下载并将其打包到Eclipse Drools项目中的工件JAR。

我正在将Workbench工件作为我的应用程序中的默认kiesession加载,然后执行工件中包含的业务流程,如下所示:

public Person loadGuvnor(Person person) throws IOException{

    Person globalPerson = new Person();

    try 
    {
        KieServices kieServices = KieServices.Factory.get();
        KieRepository kieRepository = kieServices.getRepository();
        KieContainer kieContainer = kieServices.getKieClasspathContainer();
        KieSession myKieSession = kieContainer.newKieSession();

        myKieSession.insert(person);
        myKieSession.setGlobal("globalPerson", globalPerson);

        myKieSession.startProcess("MySoapUIProject.IDValidationProcess");
        myKieSession.fireAllRules();
        System.out.println("After Process Starts");

        globalPerson = (Person)myKieSession.getGlobal("globalPerson");

        System.out.println("Is the person a SACitizen?\t\t" + globalPerson.isSACitizen());
        System.out.println("Is the ID Valid?\t\t\t" + globalPerson.isValid());
        System.out.println("What is their Sequence Digits?\t\t" + globalPerson.getSequence());
        System.out.println("What is their DoB?\t\t\t" + globalPerson.getDateOfBirth().toString());
        System.out.println("What is their Age in Days this year?\t" + globalPerson.getAgeDays());
        System.out.println("What is their Age in Years?\t\t" + globalPerson.getAgeYears());
        System.out.println("what is their Gender?\t\t\t" + globalPerson.getGender());
        System.out.println("what is their Gender?\t\t\t" + globalPerson.getGenderText());

        return globalPerson;

    } catch (Exception e) 
    {
        e.printStackTrace();
    }

    return globalPerson;
}    

最终目标是拥有一个独立的Java应用程序,其中工作台工件存储在jar中,我想使用存储在此jar中的kmodule.xml和pom.properties作为KieContainer。

我已经读过,我遇到的这个错误可能是由于没有从默认目录启动应用程序引起的,但是我尝试了这个并且它仍然会产生相同的错误。

我倾向于认为这可能是因为系统变量不存在而应该但是我已经在另一台计算机上安装了Maven用于测试和蚂蚁。仍然没有运气。

我还尝试将项目导入测试计算机。我可以成功导入它并在IDE中运行项目而没有任何问题。但后来我将它导出为可运行的Jar,然后产生与上面相同的错误。

所以我的问题是:我如何解决错误“无法从myMoapUIProject-1.1.jar加载pom.properties,因为无法找到jarPath。”这样我的独立Java应用程序可以在另一台计算机上运行吗?

1 个答案:

答案 0 :(得分:0)

我认为这与Drools的类路径和包装管理更相关,正如我注意到你提到的那样:

  

我可以成功导入它并在IDE中运行该项目   任何问题。但后来我把它作为一个可运行的Jar出口,然后再一样   产生上述错误。

,关键点在导出上。通常我会用Maven打包,因为我希望它可以设置为uberjar或者遮阳等。

如果您使用Eclipse导出,我认为您可以尝试选择“将所需的库复制到子文件夹(...)”选项,然后确保在启动jar时,您已列出所有必需的“库”jar进入类路径,例如:

java -cp 'myJavaApp.jar:lib/*' your.package.MainClass

java -cp 'myJavaApp.jar;lib/*' your.package.MainClass

for Windows。

我认为您遇到的问题是您的MySoapUIProject-1.1.jar是手动添加到Eclipse类路径而不是通过正确的maven依赖关系管理,因此当您在IDE中时可以作为文件系统上的.jar文件使用当你“Eclipse导出”时,你将它包装在另一个罐子里。

除了更多与Drools相关的说明,如果您有KieWorkbench和repo,您​​可以避免手动操作,如上所述可能容易出错并只使用Drools documentation exampleSee file_get_contents()自动Maven分辨率最适合你的情况?

希望这有帮助