Native2Ascii API

时间:2012-06-19 14:09:27

标签: java ant

我正在尝试使用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" 

有人知道问题是什么吗?

1 个答案:

答案 0 :(得分:2)

从Ant源代码中,您可以看到项目为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。有了这个,我就能够运行它。