为什么Class.class.getResouceAsStream(String)总是返回null?

时间:2018-02-05 20:49:25

标签: java

我尝试从.png文件的类路径中获取.jar图像,这样就不会依赖{{1}旁边的单独resource文件夹}}。我尝试在.jar方法的帮助下做到这一点。但是,即使确保Class.class.getResourceAsStream(String)图像的路径有效,该方法仍会返回.png。该文件的路径是:

null

该软件包还包含两个与我的项目相关的附加文件:source/org/linear/blank.png 类和Application接口。

1 个答案:

答案 0 :(得分:1)

由于ClassLoader.getSystemResourceAsStream类由引导程序类加载器加载,并且Java文档说明了

  

如果此对象是由引导类加载器加载的,则该方法   代表resources

此方法在Application文件夹中查找资源。

因此,要使代码正常工作,您有两种选择:

1)使用您的某个课程,例如Class,而不是Application。在这种情况下,资源路径相对于Application.class.getResourceAsStream("/blank.png") 类的位置进行解析:

getSystemResourceAsStream

2)将您的图片放入资源文件夹,在这种情况下,Class.class.getResourceAsStream("/blank.png") 也会找到它:

let atvPromise = ATVStatement();
atvPromise.then ((result) => {
    CustomMessage();
}).catch ( (err) => {
    console.log('An error occurred: ' + err);
});

function ATVStatement() {

    return new Promise(function(resolve, reject) {
        request = new Request("select distinct(\"Product Name\") from SPA_Data_Feeds where \"Strategic Priority\" = 'Accelerate to Value (LD)'", 
            function(err, rowCount, rows) 
                {
                    console.log(rowCount + ' row(s) returned');
                    if (err) {
                        reject(err);
                    } else {
                        resolve(rows);
                    }
                }
            );


        var count = 0

        request.on('row', function(columns) {
            columns.forEach(function(column) {
                console.log("%s\t", column.value);
                result+= column.value + "\t\n"; //result is a global variable
                count++;

             }); 
             });

        connection.execSql(request);

    });
}