[英]this.getClass().getClassLoader().getResource() == Exception
[英]How to use this.getClass().getResource(String)?
我無法理解這段代碼的錯誤。
public void run(String url) {
try {
FileInputStream file;
file = new FileInputStream(this.getClass().getResource(url));
Player p = new Player(file);
p.play();
}catch(Exception e){
System.err.print( url + e);
}
}
當我嘗試運行它時,它說我“沒有為FileInputStream(URL)找到合適的構造函數”。 為什么會這樣?
采用:
getClass().getResourceAsStream(classpathRelativeFile)
路徑資源的getClass().getResourceAsStream(classpathRelativeFile)
new FileInputStream(pathtoFile)
。 使用getResourceAsStream更簡單
InputStream in = getClass().getResourceAsStream(url);
Player p = new Player(file);
將文件放在類路徑的文件夾的根目錄(生成.class
文件的文件夾)中,然后使用以下語句:
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream(filePath);
Player p = new Player(inputStream );
這里filePath
是根文件夾的相對文件路徑。
FileInputStream構造函數的參數是File,String ...(請參閱http://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html ),但Class.getResource返回URL(請參閱http ://docs.oracle.com/javase/6/docs/api/java/lang/Class.html ),而不是File或String。 嘗試使用
public void run(String url) {
try {
FileInputStream file;
file = new FileInputStream(new File(this.getClass().getResource(url).toURI()));
Player p = new Player(file);
p.play();
}catch(Exception e){
System.err.print( url + e);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.