2

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" 

誰が問題が何であるか知っていますか?

4

1 に答える 1

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ビルド(native2asciiタスクを使用)またはJDKのnative2ascii CLIを使用して、ファイルを「オフライン」に変換できますか?

2.tools.jarをクラスパスに追加します

tools.jarランタイムクラスパスでJDKから取得する必要があります。それで、私はそれを実行することができました。

于 2012-06-19T16:46:37.477 に答える