- PR -

Javaアプリケーションからブラウザを起動したい

1
投稿者投稿内容
selfish
会議室デビュー日: 2003/01/09
投稿数: 14
投稿日時: 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)

teto
ベテラン
会議室デビュー日: 2002/07/31
投稿数: 61
投稿日時: 2003-01-09 22:18
>java.security.AccessControlException: access denied (java.io.FilePermission

なので、権限がないということでしょう。

#このソース「newString[ ]」のところだけ直してコンパイルし
#Windows上で実行し作者の意図どおりの動作確認はできました。

selfish
会議室デビュー日: 2003/01/09
投稿数: 14
投稿日時: 2003-01-09 22:45
tete様、早速のレスありがとうございます。

>なので、権限がないということでしょう。

なるほど。ということは権限を付加させれば問題ないということですね。

>#このソース「newString[ ]」のところだけ直してコンパイルし
>#Windows上で実行し作者の意図どおりの動作確認はできました。

前の書き込みに説明入れていませんでした。申し訳ないです。。
私の環境もWindowsです。動作確認できたとのことですが=ブラウザが起動できた
ということですよね?



selfish
会議室デビュー日: 2003/01/09
投稿数: 14
投稿日時: 2003-01-09 22:48
teto様。
大変申し訳ありません。お名前間違っておりました。
Cookie
ベテラン
会議室デビュー日: 2002/11/05
投稿数: 59
投稿日時: 2003-01-10 11:41
こんにちは。

私はアプレットからの印刷を実行しようとしたのですが、
こちらで書かれているものと同様のアクセス権限でのExceptionが
発生して困っていました。

権限を付加させればよい…とのことですが、具体的には
どのように対処されたのでしょうか?
(直接ポリシーファイルをいじる、コード中に文を追加するなど)
参考にさせていただきたいので、もしよろしければ教えて下さい。
teto
ベテラン
会議室デビュー日: 2002/07/31
投稿数: 61
投稿日時: 2003-01-10 12:44
>私の環境もWindowsです。動作確認できたとのことですが=ブラウザが起動できた
>ということですよね?

はい。
#ソースのコピハリ程度なので動作確認は数分程度しかかけていません。

>私はアプレットからの印刷を実行しようとしたのですが、
>こちらで書かれているものと同様のアクセス権限でのExceptionが
>発生して困っていました。
>権限を付加させればよい…とのことですが、具体的には
>どのように対処されたのでしょうか?
>(直接ポリシーファイルをいじる、コード中に文を追加するなど)

アプレットの事はよくわかりません。
ポリシーファイルの編集や証明書のインストールが必要という
知識程度。

もともとの趣旨が「javaアプリケーションで」という事なのでアプレットに
おける権限とは問題の本質が異なります。
YKID
常連さん
会議室デビュー日: 2002/04/09
投稿数: 29
投稿日時: 2003-01-10 16:00
こんばんわ、YKIDです。

引用:

Cookieさんの書き込み (2003-01-10 11:41) より:
私はアプレットからの印刷を実行しようとしたのですが、
こちらで書かれているものと同様のアクセス権限でのExceptionが
発生して困っていました。

権限を付加させればよい…とのことですが、具体的には
どのように対処されたのでしょうか?
(直接ポリシーファイルをいじる、コード中に文を追加するなど)
参考にさせていただきたいので、もしよろしければ教えて下さい。



ポリシーをアプレットのコードから変更できるのはマズいでしょう。
アプレットに証明書を付ければ、アプリケーションとほぼ同様に実行が可能になります。

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
selfish
会議室デビュー日: 2003/01/09
投稿数: 14
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)