我試圖從我的項目中的resources
導入文件。我指定SOLVER_CONFIG
從resources
的根中獲得solver.xml
。未從「資源」目錄中檢測到的文件
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();
}
}
它應該採取solver.xml
從resources
根。它工作在this case,但反覆無常的Java神否則下旨爲我的項目:
[email protected]:~/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)
問:爲什麼心不是從Java resources
檢測文件?
我包括src/main/java/in/co/technovia/sudoku/
應用和src/main/resources/
目錄和當前的classpath的內容。
[email protected]:~/dev/drools/sudoku$ ls src/main/resources/
score.drl score.drl~ solver.xml solver.xml~
[email protected]:~/dev/drools/sudoku$ ls src/main/java/in/co/technovia/sudoku/
App.class App.java~ helloworld.class helloworld.java~
App.java domain helloworld.java solution
[email protected]:~/dev/drools/sudoku$ export | grep CLASSPATHdeclare -x
CLASSPATH=".:/home/jesvin/dev/drools/sudoku/binaries/*:/home/jesvin/dev/drools/sudoku/src/main/java"
解決方案:作爲khmarbaise在他回答說,這個目錄是爲一個Maven構建。所以要包含目錄,請參閱'https://stackoverflow.com/a/9045680/604511'。
「這是在Maven構建的意圖」,但[這個項目](https://github.com/diega/drools-planner-poc/tree/master/src/main)我對它的建模似乎並不是一個Maven構建。 – aitchnyu 2012-01-28 13:00:54
是的,資源已經被使用[就像你描述](http://grepcode.com/file/repository.jboss。org/maven2/org.drools.solver/drools-solver-core/5.0.0.M5/org/drools/solver/config /XmlSolverConfigurer.java#XmlSolverConfigurer.configure%28java.lang.String%29)但是如何獲得它指向正確的地方? – aitchnyu 2012-01-28 13:10:32