亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了如何解決java2D中的ClassCastException(錯誤ID 7172749)的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我很倒霉,因為我在java8中遇到了一個錯誤,
對于其他任何人來說,這似乎都不是什么大問題,因此Oracle不會在java9之前修復(fù)它。
錯誤具有Bug-ID 7172749(還請注意相關(guān)和重復(fù)的錯誤)
在某個Linux機(jī)器上,它總是經(jīng)常發(fā)生

我在帶有jdk1.8.0_u66的Ubuntu 14.04.3 LTS上遇到了這個問題。
但是,在另一個安裝了Ubuntu12.04.3LTS和相同的JDK版本的機(jī)器上,我根本無法重現(xiàn)這個問題。

讓我迷惑不解的是,這似乎并沒有給其他任何人帶來驚喜,所以我猜我可能犯了一個特別嚴(yán)重的錯誤。
我運行的是Oracle-JDK(與OpenJDK相反),因為我們的客戶使用相同的版本(盡管是在Windows上),并且我們的想法是接近他們的環(huán)境。

所以,我的問題是,如何繞過這個問題(例如,安裝X11庫XY,使用Magic-XXjava2dailsafe參數(shù)啟動我的java程序,或者類似的東西)
并加入到可以放心地等待甲骨文解決實際問題的人群中嗎?

致以最誠摯的問候
TOBI

順便說一下,我的堆棧如下所示:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.awt.image.BufImgSurfaceData cannot be cast to sun.java2d.xr.XRSurfaceData
    at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:145)
    at sun.java2d.xr.XrSwToPMBlit.Blit(XRPMBlitLoops.java:353)
    at sun.java2d.SurfaceDataProxy.updateSurfaceData(SurfaceDataProxy.java:498)
    at sun.java2d.SurfaceDataProxy.replaceData(SurfaceDataProxy.java:455)
    at sun.java2d.SurfaceData.getSourceSurfaceData(SurfaceData.java:233)
    at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:566)
    at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:67)
    at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1014)
    at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3318)
    at sun.awt.image.ImageRepresentation.drawToBufImage(ImageRepresentation.java:813)
    at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1021)
[...]

推薦答案

我想出了解決此問題的方法

簡而言之:使用參數(shù)-Dsun.java2d.xrender=false啟動JVM。

使用該選項,我不再看到問題。

背景信息

Bug JDK-7172749最近已使用jdk9內(nèi)部版本124進(jìn)行了修復(fù),該錯誤修復(fù)已通過JDK-8158068回傳到j(luò)dk8更新112。您可以從以下位置下載jdk8u112構(gòu)建預(yù)覽:JDK8 Early Access Releases。

但是,運行此生成沒有為我解決問題。

我的情況,我遇到了錯誤:我正在運行jEdit,在從掛起到RAM恢復(fù)Linux之后,我看到了這些ClassCastException。
這是相同的堆棧跟蹤:

10:04:10 [AWT-EventQueue-0] [error] AWT-EventQueue-0: java.lang.ClassCastException: sun.awt.image.BufImgSurfaceData cannot be cast to sun.java2d.xr.XRSurfaceData
10:04:10 [AWT-EventQueue-0] [error] AWT-EventQueue-0:  at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:145)

此異常的影響是,jEdit或部分的整個窗口不會繪制并且保持白色。

查看patch for the backported bugfix,它實際上修復(fù)了不同類(即sun.java2d.xr.XRRenderer)中的ClassCastException。

所以,這沒有解決我的問題也就不足為奇了。

另一次Google搜索顯示bug JDK-6975408,這使我意識到系統(tǒng)屬性sun.java2d.xrender

更多搜索:

此選項在System Properties for Java 2D Technology

中介紹

報價:

xender

目標(biāo)用途:為基于X11的現(xiàn)代臺式機(jī)啟用基于XRender的Java 2D呈現(xiàn)管道,提供更高的圖形性能。

介紹:Java SE 7

默認(rèn)值:false

使用方法:管道默認(rèn)禁用,但可以通過設(shè)置命令行屬性-Dsun.java2d.xrender=true啟用。較早的X11配置可能無法支持XRender。詳細(xì)形式-Dsun.java2d.xrender=True可用于將消息啟用到標(biāo)準(zhǔn)輸出,指示管道是否已實際啟用。

是的,這是Java7中添加的功能:Xrender pipeline now in JDK7 master

另請參閱Enhancements in Java SE 7

在Java8中,現(xiàn)在默認(rèn)啟用:Java8: Xrender Java2D pipeline enabled by default

根據(jù)本博客的評論,XRender管道僅與Java2D、AWT和Swing相關(guān)-其他GUI框架(JavaFX、SWT等)不受影響:

基于Swing/AWT的應(yīng)用程序應(yīng)該會受益,swt/JavaFX/lwjgl/jogl使用其他與Java2D無關(guān)的代碼路徑。

我在發(fā)行說明中沒有發(fā)現(xiàn)什么,但是在源代碼中,很明顯,XRender管道在默認(rèn)情況下是啟用的:sun/awt/X11GraphicsEnvironment.java
改變了這一點的已經(jīng)在2011年完成了,根據(jù)第一個jdk8版本的說法,它一直都是啟用的。([3-11]>在2011年已經(jīng)完成了,根據(jù)ticket的說法,它總是在第一個jdk8版本中啟用。
我想,我之前沒有經(jīng)歷過這個錯誤的原因是,我可能將java7作為運行時使用了相當(dāng)長的時間,并且Eclipse沒有受到影響。

/li>

再次仔細(xì)查看重復(fù)的錯誤報告,已經(jīng)有一個與堆棧跟蹤匹配:

bug JDK-8133723:sun.awt.image.BufImgSurfaceData不能強(qiáng)制轉(zhuǎn)換為sun.java2d.xr.XRSurfaceData-它確實不是重復(fù)的.
但是,復(fù)制此錯誤可能很困難。它僅在掛起到RAM周期之后出現(xiàn)。

更新1-觸發(fā)器

該錯誤是通過使用xrandr更改輸出顯示觸發(fā)的,例如

xrandr --output eDP1 --auto --output DVI-1-0 --off

將立即導(dǎo)致ClassCastException。當(dāng)我在掛起之前關(guān)閉顯示器時,我以為是掛起-恢復(fù)導(dǎo)致了這種情況,但這是錯誤的。

更新2-新建Java錯誤票證

現(xiàn)在有一個新的Java錯誤票證:JDK-8160328

更新3-已使用jdk-9-ea-b131修復(fù)

錯誤票證JDK-8160328已作為JDK-8147542的副本關(guān)閉-此錯誤票證已使用latest EA build for java 9(內(nèi)部版本131及更高版本)修復(fù)。

我可以確認(rèn),使用xrandr切換顯示器時不再出現(xiàn)ClassCastException。

這篇關(guān)于如何解決java2D中的ClassCastException(錯誤ID 7172749)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標(biāo)簽:ClassCastException ID java2D 如何解決 錯誤
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定