我正在嘗試使用顯示 .jpg 圖片的 Image 物件創建 ImageView。當我運行“mvn clean install”時,這是我收到的錯誤訊息:
UI_INHERITANCE_UNSAFE_GETRESOURCE
我還獲得了以下資訊:
如果類被擴展,在 ui.SlotsDisplay.createImageView(String) 中使用 GetResource 可能不安全 [ui.SlotsDisplay] At SlotsDisplay.java:[line 106] UI_INHERITANCE_UNSAFE_GETRESOURCE [INFO]
我完全不知道如何將 .jpg 檔案添加到我的專案中。路徑是正確的。使用內置的 java run 方法(右鍵單擊并運行)時,我能夠啟動我的應用程式,而不會崩潰。
這是導致崩潰的一段代碼:
private ImageView createImageView(String imageName){
ImageView imageView = new ImageView(new Image(getClass().getResourceAsStream("/images/cards/" imageName ".jpg")));
imageView.setFitWidth(148);
imageView.setFitHeight(210);
return imageView;
}
IntelliJ 提供的唯一“警告”訊息是在 getClass.getResource 之前添加 Objects.requireNonNull ...
我認為這要么是 Spotbugs 問題,但它們沒有提供可能的解決方案或解決方法。我該如何解決這個問題?
uj5u.com熱心網友回復:
警告說:
如果類被擴展,ui.SlotsDisplay.createImageView(String) 中的 GetResource 可能不安全
因此,一種解決方案是不允許擴展類。
讓班級 final
宣告為 final 的類不能被子類化。
例如,通過將 final 關鍵字放在類宣告之前:
final class MyClass {
// implementation methods.
}
另一種解決方案可能是在檢索資源時直接按名稱而不是 getClass() 參考類。
例如,替換:
getClass().getResourceAsStream("/images/cards/" imageName ".jpg")
和:
SlotsDisplay.class.getResourceAsStream("/images/cards/" imageName ".jpg")
綜上所述,我從未見過這樣的關于資源查找的警告,并且我相信,除非您更好地理解其原因并且在必須非常安全的環境中運行(老虎機實作可能符合條件),否則它可能是對于大多數應用程式可以安全地忽略。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/321406.html
上一篇:Teradatatdgssconfig.jar和terajdbc4.jar,傳輸失敗500內部服務器錯誤
下一篇:使用GraalVM、Maven、GluonFX插件的本機映像-資源包com.sun.glass.ui.win的問題
