0 返信 最新の回答 日時: Mar 24, 2015 4:42 AM ユーザー:2909760

    JDK1.6.0_13とJDK1.7.0_55の共存環境でのJDK1.6.0_13指定のアプレットによる印刷処理時の不具合

    2909760

      JDK1.6.0_13とJDK1.7.0_55が共存する(インストールさている)環境にて、アプレットにてJDK1.6.0_13を指定して
      印刷処理を起動すると、セキュリティーエラーが発生します。
      (JDK1.6.0_13のみまたはJDK1.7.0_55のみがインストールされた環境ではエラーが発生しません。)

      上記の原因を教えて頂けないでしょうか。

      再現用ソースとスタックトレースを下記に記載しました。

      ★再現用ソース
      下記をJDK1.6.0_13でコンパイルし、htmlファイルをサーバに配置して、
      JDK1.6.0_13とJDK1.7.0_55が配置されているクライアントにてアクセスしてください。

      -----------------------
      ■HTML
      <html>
      <head><title>Applet Test</title></head>
      <body>

      <applet code="AppletPrinterJobSample.class" width="150" height="150">
        <param name="java_version" value="1.6*"> </applet>

      </body>
      </html>
      -----------------------
      ■Java
      import java.applet.Applet;
      import java.awt.Graphics;
      import java.awt.print.PrinterJob;

      public class AppletPrinterJobSample extends Applet{

      public void init(){
      }

      public void paint(Graphics g){
        // java のバージョン表示
        g.drawString(System.getProperty("java.version"),10,10);
        System.out.println(System.getProperty("java.version"));
          
        // 印刷処理の起動
        try {
         PrinterJob.getPrinterJob();
        } catch (SecurityException e){
         e.printStackTrace();
         System.out.println("NG!");
         return;
        }
        System.out.println("OK!");
      }
      }
      -----------------------

      ★スタックトレース

      使用中のJREのバージョン 1.6.0_13-b03 Java HotSpot(TM) Client VM
      ユーザーのホーム・ディレクトリ = C:\Users\A2228729
      ----------------------------------------------------
      c:  コンソール・ウィンドウをクリア
      f:  ファイナライズ・キューのオブジェクトをファイナライズ
      g:  ガベージ・コレクト
      h:  このヘルプ・メッセージを表示
      l:  クラスローダー・リストをダンプ
      m:  メモリー使用率を表示
      o:   ロギングをトリガー
      q:  コンソールを非表示
      r:  ポリシー構成を再ロード
      s:  システム・プロパティとデプロイメント・プロパティをダンプ
      t:  スレッド・リストをダンプ
      v:  スレッド・スタックをダンプ
      x:  クラスローダー・キャッシュをクリア
      0-5: トレース・レベルを<n>に設定
      ----------------------------------------------------
      トレース・レベルを5に設定: すべて ... 完了。1.6.0_13
      ui: Pushing modality for applet ID 1 with dialog sun.plugin.util.PluginSysUtil$DummyDialog[dialog0,-100,-100,116x27,layout=java.awt.BorderLayout,APPLICATION_MODAL,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,22,110x2,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
      ui: missing resource: java.util.MissingResourceException: Can't find resource for bundle com.sun.deploy.resources.Deployment, key OK
      ui: missing resource: java.util.MissingResourceException: Can't find resource for bundle com.sun.deploy.resources.Deployment, key OK
      ui: missing resource: java.util.MissingResourceException: Can't find resource for bundle com.sun.deploy.resources.Deployment, key 取消
      basic: Dialog type is not candidate for embedding
      java.lang.reflect.InvocationTargetException
      at java.awt.EventQueue.invokeAndWait(Unknown Source)
      at javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
      at com.sun.deploy.ui.DialogTemplate.setVisible(Unknown Source)
      at com.sun.deploy.ui.UIFactory$11.execute(Unknown Source)
      at sun.plugin.util.PluginSysUtil$SysExecutionThread.run(Unknown Source)
      Caused by: java.lang.NullPointerException
      at java.awt.Dialog.show(Unknown Source)
      at java.awt.Component.show(Unknown Source)
      at java.awt.Component.setVisible(Unknown Source)
      at java.awt.Window.setVisible(Unknown Source)
      at java.awt.Dialog.setVisible(Unknown Source)
      at com.sun.deploy.ui.DialogHelper.setVisible(Unknown Source)
      at com.sun.deploy.ui.DialogTemplate$31.run(Unknown Source)
      at java.awt.event.InvocationEvent.dispatch(Unknown Source)
      at java.awt.EventQueue.dispatchEvent(Unknown Source)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
      at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      at java.awt.EventDispatchThread.run(Unknown Source)
      java.lang.SecurityException: checkPrintJobAccess
      at sun.plugin2.applet.SecurityManagerHelper.showPrintDialog(Unknown Source)
      at sun.plugin2.applet.SecurityManagerHelper.access$000(Unknown Source)
      at sun.plugin2.applet.SecurityManagerHelper$4.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.plugin2.applet.SecurityManagerHelper.checkPrintJobAccessHelper(Unknown Source)
      at sun.plugin2.applet.AWTAppletSecurityManager.checkPrintJobAccess(Unknown Source)
      at java.awt.print.PrinterJob.getPrinterJob(Unknown Source)
      at AppletPrinterJobSample.paint(AppletPrinterJobSample.java:17)
      at sun.awt.RepaintArea.paintComponent(Unknown Source)
      at sun.awt.RepaintArea.paint(Unknown Source)
      at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
      at java.awt.Component.dispatchEventImpl(Unknown Source)
      at java.awt.Container.dispatchEventImpl(Unknown Source)
      at java.awt.Component.dispatchEvent(Unknown Source)
      at java.awt.EventQueue.dispatchEvent(Unknown Source)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
      at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
      at java.awt.EventDispatchThread.run(Unknown Source)


      以上になります、よろしくお願いいたします。