我正在尝试使用API执行Native2Ascii任务。我的代码如下所示:
public static void main(String[] args) {
File sourceDir = new File("c://temp//");
File targetDir = new File("c://temp1//");
Native2Ascii n2a = new Native2Ascii();
n2a.setSrc(sourceDir);
n2a.setDest(targetDir);
n2a.setEncoding("utf8");
n2a.execute();
}
不幸的是,我在n2a.execute()行中收到以下异常:
java.lang.NullPointerException
at org.apache.tools.ant.types.AbstractFileSet.setupDirectoryScanner(AbstractFileSet.java:529)
at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:492)
at org.apache.tools.ant.taskdefs.MatchingTask.getDirectoryScanner(MatchingTask.java:192)
at org.apache.tools.ant.taskdefs.optional.Native2Ascii.execute(Native2Ascii.java:239)
at Native2AsciiTest.main(Native2AsciiTest.java:27)
Exception in thread "main"
有人知道问题出在哪里吗?
最佳答案
从Ant源代码中,您可以发现Project为null:
public synchronized void setupDirectoryScanner(FileScanner ds, Project p) {
if (isReference()) {
getRef(p).setupDirectoryScanner(ds, p);
return;
}
if (ds == null) {
throw new IllegalArgumentException("ds cannot be null");
}
ds.setBasedir(dir);
PatternSet ps = mergePatterns(p);
p.log(getDataTypeName() + ": Setup scanner in dir " + dir
+ " with " + ps, Project.MSG_DEBUG);
NullPointerException位于
p.log
。因此,您可以尝试以下操作以克服NullPointerException:
Project project = new Project();
n2a.setProject(project);
然后继续下一个问题...
1.跟踪您的评论
您需要在应用程序运行时进行此文件转换吗?您可以使用ant build(带有native2ascii任务)还是JDK的native2ascii CLI来“离线”转换文件?
2.将tools.jar添加到classpath
您需要在运行时类路径上从JDK获得
tools.jar
。这样,我就可以运行它。