- - PR -
Javaアプリケーションからブラウザを起動したい
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-01-09 22:00
初めての書き込みとなります。よろしくお願いします。
件名のとおり、 「Javaアプリケーションからブラウザを起動したい」 ということでネットを調べていましたら次のようなサイト http://developer.apple.com/ja/qa/java/java12.html を見つけました。 ここに掲載されているソースをコンパイルし、実行すると 実行時にExceptionが発生してしまい、原因が良くわからない状態でいきづまっております どなたかご教授お願いします。 JDKのバージョンは1.4.1です。実行時のログは下記に記します。 java.security.AccessControlException: access denied (java.io.FilePermission <<AL L FILES>> execute) at java.security.AccessControlContext.checkPermission(AccessControlConte xt.java:270) at java.security.AccessController.checkPermission(AccessController.java: 401) at java.lang.SecurityManager.checkPermission(SecurityManager.java:542) at java.lang.SecurityManager.checkExec(SecurityManager.java:799) at java.lang.Runtime.exec(Runtime.java:563) at java.lang.Runtime.exec(Runtime.java:491) at java.lang.Runtime.exec(Runtime.java:457) at BrowserLauncher.openURL(BrowserLauncher.java:537) at sample$Al.actionPerformed(sample.java:45) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:17 64) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra ctButton.java:1817) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel .java:419) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257 ) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL istener.java:245) at java.awt.Component.processMouseEvent(Component.java:5093) at java.awt.Component.processEvent(Component.java:4890) at java.awt.Container.processEvent(Container.java:1566) at java.awt.Component.dispatchEventImpl(Component.java:3598) at java.awt.Container.dispatchEventImpl(Container.java:1623) at java.awt.Component.dispatchEvent(Component.java:3439) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450 ) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095) at java.awt.Container.dispatchEventImpl(Container.java:1609) at java.awt.Component.dispatchEvent(Component.java:3439) at java.awt.EventQueue.dispatchEvent(EventQueue.java:450) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh read.java:197) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136) at java.awt.EventDispatchThread.run(EventDispatchThread.java:99) | ||||
|
投稿日時: 2003-01-09 22:18
>java.security.AccessControlException: access denied (java.io.FilePermission
なので、権限がないということでしょう。 #このソース「newString[ ]」のところだけ直してコンパイルし #Windows上で実行し作者の意図どおりの動作確認はできました。 | ||||
|
投稿日時: 2003-01-09 22:45
tete様、早速のレスありがとうございます。
>なので、権限がないということでしょう。 なるほど。ということは権限を付加させれば問題ないということですね。 >#このソース「newString[ ]」のところだけ直してコンパイルし >#Windows上で実行し作者の意図どおりの動作確認はできました。 前の書き込みに説明入れていませんでした。申し訳ないです。。 私の環境もWindowsです。動作確認できたとのことですが=ブラウザが起動できた ということですよね? | ||||
|
投稿日時: 2003-01-09 22:48
teto様。
大変申し訳ありません。お名前間違っておりました。 | ||||
|
投稿日時: 2003-01-10 11:41
こんにちは。
私はアプレットからの印刷を実行しようとしたのですが、 こちらで書かれているものと同様のアクセス権限でのExceptionが 発生して困っていました。 権限を付加させればよい…とのことですが、具体的には どのように対処されたのでしょうか? (直接ポリシーファイルをいじる、コード中に文を追加するなど) 参考にさせていただきたいので、もしよろしければ教えて下さい。 | ||||
|
投稿日時: 2003-01-10 12:44
>私の環境もWindowsです。動作確認できたとのことですが=ブラウザが起動できた
>ということですよね? はい。 #ソースのコピハリ程度なので動作確認は数分程度しかかけていません。 >私はアプレットからの印刷を実行しようとしたのですが、 >こちらで書かれているものと同様のアクセス権限でのExceptionが >発生して困っていました。 >権限を付加させればよい…とのことですが、具体的には >どのように対処されたのでしょうか? >(直接ポリシーファイルをいじる、コード中に文を追加するなど) アプレットの事はよくわかりません。 ポリシーファイルの編集や証明書のインストールが必要という 知識程度。 もともとの趣旨が「javaアプリケーションで」という事なのでアプレットに おける権限とは問題の本質が異なります。 | ||||
|
投稿日時: 2003-01-10 16:00
こんばんわ、YKIDです。
ポリシーをアプレットのコードから変更できるのはマズいでしょう。 アプレットに証明書を付ければ、アプリケーションとほぼ同様に実行が可能になります。 Java2でのセキュリティ事情 http://www.dmz.hitachi-sk.co.jp/Java/Tech/security/12security.html 電子署名付きアプレット http://www.dmz.hitachi-sk.co.jp/Java/Tech/security/12signedapplet.html | ||||
|
投稿日時: 2003-01-10 18:28
こんにちは。
teto様 権限付加と書きましたが、結局よくわからずでした。 最終的には Runtime.getRuntime().exe(new String[] {browserName, url}); を Runtime.getRuntime().exe(new String[] {[IEXPLORE.EXEのフルパス], url}); にし、ファイルダイアログも出さないように変更し結果動作しました。 Cookie様 私の場合はSwingアプリに上記のソースをを実装し、 「ボタンをクリックしたら、ブラウザ起動」という機能を実現しました。 アプレットについては知識不足でコメントできません。 YKID様がおっしゃっているとおり電子署名付きアプレットで 実現可能ではないでしょうか。 私もちょっと試してみます。 それでわ | ||||
1
