Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JNJPからの起動でgetScreenDevices().length()が正常な値を返さない

java7update2より後からjava8u25の現在の問題で、
GraphicsEnvironmentAPIを使用して、アプリ起動後にマル
チスクリーンの追加変更をする実装で、
getScreenDevices().length()を使用しても正確な情報を
取得することができません。(起動時のま
まの値)。
Jre6/java7Update2以前の環境では正常に動作していま
す。

環境
OS  :windows8.1 pro 64bit or 32bit 
JAVA: 32bit java8 Update25/Java7 update 67

再現性:常に発生
条件:ローカルでECLIPSEから実行するには問題なく動作
しますが、webstart(JNLP)で実行すると現在値が取得で
きません。


StringBuilder sb= new StringBuilder("");
GraphicsDevice[] devices = 
GraphicsEnvironment.getLocalGraphicsEnvironment().ge
tScreenDevices();
sb.append("\n getScreenDevices().length = 
"+devices.length);
if (devices.length >= 1) {
    for (int i = 0; i < devices.length; i++) {
        GraphicsDevice aGraphicsDevice = 
devices[i];
        String strID= 
aGraphicsDevice.getIDstring();
        int intWidth = 
aGraphicsDevice.getDisplayMode().getWidth();
        int intHeight = 
aGraphicsDevice.getDisplayMode().getHeight();
        sb.append("\n "+i+":"+strID+" :    
Width= "+intWidth+ " Height= "+intHeight);
        GraphicsConfiguration gc = 
aGraphicsDevice.getDefaultConfiguration();
        Point point = 
gc.getBounds().getLocation();
        sb.append(" point.x = "+point.x+ " 
y= "+point.y);
        System.out.printf("is_Online: 
display %d width  %d height %d bounds: posX %d posY 
%d \n",
                i, 
intWidth,intHeight,point.x,point.y  );
        }
    }
}

7

回答

93673

閲覧

7件の回答

評価

0

そういうのはOracleに言うんだよ。

評価

30

質問者です
内容だけ投稿してしまいましたのですみません。
本来はjava bug database に報告するべきなのでしょう
が、何せ英語が不得意なもので、断念しました。この件は
BUGなのかもわかりませんがいまだ解決されないようなの
で、どなたか興味がある方がいらっしゃいましたらその方
面のBUGレポートなどしてもらえれば幸いと期待し投稿し
ました。
もし、Webstartで同じようなマルチ画面の実装などで詳し
い方がいらっしゃれば、アドバイスや回避方法など教えて
いただければありがたいです。

評価

30

自分も英語は得意じゃないですが相手に伝わればいいや的
なのりでレポートしたことがあります。

GraphicsEnvironment API does not detect dynamically 
attached graphics device

などのタイトルにして

how to reproduce:
1. start application under JNLP
2. attach new graphics device
3. can't obtain the attached device through 
GraphicsEnvironemnt API

environment:
  OS:windows8.1 pro (both 32bit and 64bit)
  JRE:Java7u2 and later

程度のレポートでも伝わる気がします。
レポートしておくと、担当チームが解決に向けて動き出し
たり、どのバージョンで直すといったコメントがつくの
で、bug fixを待っているのであれば自分でレポートした
ほうがいいと思います。一応はGraphicsEnvironmentなど
のキーワードで検索して既にレポートされていないかはチ
ェックすべきでしょうが、パッと見では同件かどうかはわ
からないこともあるので同じ内容が見当たらないと思った
らレポートしちゃってもいいと思います。

評価

20

日本人だってそうだが、自分たちの言葉に不慣れな相手が何
かを伝えようとしているのを見れば、普通は真意を読み取ろ
うと頑張ってくれるんだよ。
肝心なのは、伝えようと勇気を出してみることだ。

先の人に付け加えるとすれば、
cant't obtain "currently" attached...

It works fine on jre6/jre7u2 or earlier.
くらいかな。jre7u2「より後」がダメ、u2「以前」がokとあ
るからu2がどっちなのか読み取れないんだが。

評価

0

質問者です
皆さん、アドバイスありがとうございます。
現状で検証では、手元にオフラインインストール版はjre7u2
とjre7u25しか残っていないのですが。動作OKなのはjre7u2ま
での状況です。
いただいた文例を参考にBUG報告をしてみます。
ありがとうございます。

評価

0

情報が正しければ正しいほど、報告される側はありがた
い。u3からu24が不明というなら、インストールして試
してみてもいいだろう。

http://www.oracle.com/technetwork/java/javase/down
loads/java-archive-downloads-javase7-521261.html

老婆心だが。u3、u4、u5…と1つずつ試すのは、プログ
ラマのすることではない。まず試すべきはu13で、次が
u7かu19。意味が分かるかな?
ダメになった後、どこかでうまくいくbuildがあるかも
知れないが、それはあっちに任せればいい。

評価

0

見返してみたら、u19は出てなかったんだなw まあ考え方
を伝えようとしたものなので、読み取って欲しい。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。