Optaplanner as jar 似乎无法读取 xml 文件

Optaplanner as jar does not seem to read xml file

我是 optaplanner 的新手 我在 iDE 工作并创建了一个工作原型,现在想 运行 进行产品模拟测试。 我为我的整个项目创建了一个 jar 但是当我用输入文件调用 jar 时, 我得到异常 "Null POinter Exception" 我尝试通过两种方式创建 SolverFactory

Trial 1:
        SolverFactory<PocSolution> factory = SolverFactory.createFromXmlResource(SOLVER_CONFIG,this.getClass().getClassLoader());
Trial 2:
        SolverFactory<PocSolution> factory = SolverFactory.createFromXmlReader(new FileReader(SOLVER_CONFIG),this.getClass().getClassLoader());

Exception in thread "main" java.lang.NullPointerException
    at org.kie.internal.io.ResourceFactory.newByteArrayResource(ResourceFactory.java:66)
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.getResource(AbstractKieModule.java:299)
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.addResourceToCompiler(AbstractKieModule.java:264)
    at org.drools.compiler.kie.builder.impl.AbstractKieModule.addResourceToCompiler(AbstractKieModule.java:259)
    at org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:228)
    at org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:74)
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:251)
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:219)
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:177)
    at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildDroolsScoreDirectorFactory(ScoreDirectorFactoryConfig.java:503)
    at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildScoreDirectorFactory(ScoreDirectorFactoryConfig.java:331)
    at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:220)
    at org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:57)
    at org.optaplanner.examples.MyPoc.app.Poc.solve(Poc.java:132)
    at org.optaplanner.examples.MyPoc.app.Poc.main(Poc.java:41)

正在成功读取您的求解器配置文件。问题似乎出在 <scoreDirectorFactory> 元素内部,您在其中指定分数 DRL。请确保您使用 <scoreDrl> 元素并且 而不是 <scoreDrlFile><scoreDrlFile> 应该包含本地文件系统路径,而 <scoreDrl> 用于加载类路径资源(当 DRL 文件位于 JAR 中时就是这种情况)。它应该类似于:

<scoreDirectorFactory>
  <scoreDrl>org/myproj/core/solver/myRules.drl</scoreDrl>
</scoreDirectorFactory>