为什么FileSystemView在我的场景中抛出NPE

时间:2017-12-03 09:09:32

标签: java teamcity

我使用Java来获取卷标和驱动器号之间的映射,代码如下所示:

import java.io.File;
import javax.swing.filechooser.FileSystemView;
public class Test{

    public void listMap(){
        File[] files = File.listRoots();
        System.out.println("The map between volume label and drive is: " );
        for(File file: files){
            String theMap = FileSystemView.getFileSystemView().getSystemDisplayName(file);
            System.out.println(theMap);
        }
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.listMap();
    }
}

我已经通过exe4j将上面的代码构建到windows上的exe文件中。直接运行它可以正常工作。 但是,当我使用Teamcity构建代理来启动exe时,调用FileSystemView.getFileSystemView().getSystemDisplayName(file)时将抛出以下异常。

java.lang.NullPointerException
    at sun.awt.shell.Win32ShellFolder2$1.call(Unknown Source)
    at sun.awt.shell.Win32ShellFolder2$1.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

任何评论都表示赞赏。

0 个答案:

没有答案