如何在非Maven项目中拥有等效的主/资源?

时间:2012-01-28 13:40:37

标签: java

我试图在Github基于this project建模我的项目。

public class DroolsPlannerPoCApp {
....
private static final String   SOLVER_CONFIG    = "/ServiceDeliverySolverConfig.xml";
....
private Solver createSolver() {
        XmlSolverConfigurer configurer = new XmlSolverConfigurer();
        configurer.configure( SOLVER_CONFIG );
        return configurer.buildSolver();
    }

SOLVER_CONFIG中提到的文件位于resources目录(see here)。


我尝试做同样的事情

package in.co.technovia.sudoku;

import java.util.ArrayList;
....
public class App{
    private static final String SOLVER_CONFIG = "/solver.xml";
    public static void main(String[] args){
    SudokuGenerator sg = new SudokuGenerator();
    ....
    }

    private static Solver createSolver(){

    XmlSolverConfigurer configurer = new XmlSolverConfigurer();
        configurer.configure(SOLVER_CONFIG);
        return configurer.buildSolver();
    }
}

失败了。

jesvin@Jesvin-Technovia:~/dev/drools/sudoku$ java in.co.technovia.sudoku.AppException in thread "main" java.lang.IllegalArgumentException: The solver configuration (/solver.xml) does not exist.
    at org.drools.planner.config.XmlSolverConfigurer.configure(XmlSolverConfigurer.java:79)
    at in.co.technovia.sudoku.App.createSolver(App.java:67)
    at in.co.technovia.sudoku.App.main(App.java:43)

我了解main/resources Maven构建意味着什么。但我手动构建我的项目。

问题:如何在我自己的项目中实现相同的功能(来自资源)?我必须在哪里放置文件以及我必须在SOLVER_CONFIG中指定什么?


function itself实现为:

public XmlSolverConfigurer configure(String resource) {
    return configure(getClass().getResourceAsStream(resource));
}

2 个答案:

答案 0 :(得分:4)

将资源放在类路径上,例如,放在源目录中。

所有Maven都将src/main/resources包/目录树合并到目标类路径中,保持相同的包/文件夹布局。

答案 1 :(得分:0)

如果手动构建,则需要手动将资源复制到类路径中,即将XML文件复制到生成的类目录的根路径中。