XMLCSPReader Null Point Error

package queens; import java.io.FileNotFoundException; import
java.io.IOException; import org.sat4j.csp.SolverFactory; import
org.sat4j.reader.ParseFormatException; import org.sat4j.reader.XMLCSPReader;
import org.sat4j.specs.ContradictionException; import
org.sat4j.specs.IProblem; import org.sat4j.specs.ISolver; import
org.sat4j.specs.TimeoutException; import org.sat4j.tools.ModelIterator; public
class Solver { public static void main(String[] args) { ISolver solver =
SolverFactory.newDefault(); solver.setTimeout(360); ModelIterator mi = new
ModelIterator(solver); XMLCSPReader reader = new XMLCSPReader(solver); try {
if (reader != null) reader.parseInstance(“queens.xml”); IProblem problem = mi;
boolean unsat = true; int count = 1; while (problem.isSatisfiable()) { unsat =
false; System.out.print(“[” + count + "] “); for (int i = 0; i <
mi.model().length; i++) { System.out.print(mi.model()[i] + " “); }
System.out.println(””); // Call mi.model() to be sure you iterate to the next
solution mi.model(); count++; } if (unsat) {
System.out.println(“Unsitisfied”); } } catch (TimeoutException e) {
System.out.println(“Timeout”); } catch (FileNotFoundException e) {
System.out.println(“File not found”); } catch (IOException e) {
System.out.println(“IO Exception”); } catch (ParseFormatException e) {
System.out.println(“ParseFormatException”); } catch (ContradictionException e)
{ System.out.println(“Contradiction”); } catch (java.lang.NullPointerException
e) { System.out.print(“NullPointerException”); } } }

上面一段代码不知道如何,一直报NULL Point Exception. 最后发现并非是代码写错,而是因为jre不对。需要使用opensdk-1.6。

然后:

java

然后:

java

选中java-opensdk1.6 然后在外面选中刚才的JavaSE-1.6 :

有时候eclipse报出Class Not Found错误,可能是因为jar包应该放在external
jar的地方,但是你却放错了位置。添加external jar的地方。如果想添加external jars,需要在:

选中propertise,然后:

左边add external jars, 添加需要的jar即可。

如果发生了selection dose not contain a main type,
那么就需要重新创建一个Project,然后将你的文件再重新导入到新的Project中。或者粘贴过去。不知道为什么eclipse经常发生这个错误。

上面一个XMLCSPReader的各种jar文件需要在sat4j.org 上下载。该下模块的都下,但是注意版本号。