質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
サービス

サービスとはバックグラウンド上に常駐し、長時間稼動し続ける実行可能ファイルを指します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

3920閲覧

Windows10のTomcat8でJavaから外部アプリを起動したい

hal_k

総合スコア18

サービス

サービスとはバックグラウンド上に常駐し、長時間稼動し続ける実行可能ファイルを指します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2016/12/13 08:20

###前提・実現したいこと
Windows10のTomcat8でJavaから外部アプリを起動したい

Windows10にTomcat8(8.0.36)をインストールしています。
このTomcatでリクエストを受け取って、アプリを起動する仕組みを作っいます。
アプリを起動するのに、Runtime.getRuntime().exec(arg)を使用しています。
argにはアプリのパスを入れています。

###発生している問題・エラーメッセージ

しかし、サービスを起動後にアクセスするとアプリの起動ができません。
タスクマネージャを見ると、プロセスとしては起動しています。
また、Tomcat8.batを直接叩いて起動すると、アプリはちゃんと起動できます。
ネット上で情報を集め、サービスのプロパティのアカウントを変更したりしてみましたが、
やはり動作しません。

###該当のソースコード
実際のソースとは異なりますが、大体下記の通りです。

try { Runtime rt = Runtime.getRuntime(); rt.exec("notepad.exe"); } catch (IOException ex) { ex.printStackTrace(); }

###試したこと
サービスのプロパティのアカウントを「ローカルシステムアカウント」から
管理者権限を持つアカウントに変更したりしました。
しかし、結果は変わらずです。

回避方法などありましたら教えていただけますでしょうか。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/13 11:12

なぜAPサーバーからGUIアプリを起動したいのか。
hal_k

2016/12/14 00:47

質問を閲覧いただきありがとうございます。処理した結果のより、リクエストを投げてアプリだけ起動(表示のみ。ユーザには操作させない)したいのだが、方法がないかという依頼があったためです。
退会済みユーザー

退会済みユーザー

2016/12/14 00:55

つまり 管理者 が WEBサーバーにリクエストを投げて 接続している別の端末の一般ユーザーの端末上でアプリを実行するということでしょうか?
hal_k

2016/12/14 03:28

大まかにはxa051様のお考えで合っています。
guest

回答1

0

ベストアンサー

正確な用語を言えなくて申し訳ないのですが、メモ帳のような画面をもったアプリケーションはGUIによる対話セッション中のユーザーが使う前提のものであって、サービス上では動かせないと思います。サービスが動作する環境は通常のGUIセッションとは異なる環境となっており、バックグラウンドで(画面を出さずに)しか動作できません。

Tomcat8.batを直接叩いて起動すると、アプリはちゃんと起動できます。

Tomcatは通常サービスとして動作させると思いますがbatファイルから起動するとGUIセッション上で動く普通のアプリケーションとして動作させることができると思います。その場合ならメモ帳などが起動できるわけです。

投稿2016/12/13 09:35

編集2016/12/13 09:37
KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hal_k

2016/12/13 10:52

KSwordOfHaste様 早速のご回答ありがとうございます。 tomcatのサービスを起動した状態では、Runtime.getRuntime().exec(arg)を使用するしない関係なく画面を持った外部ファイル(exeファイル)を起動することはできないという事なのでしょうか?何か別の方法を考える必要(tomcatを介さない等)があるという事でしょうか? 重ねての質問になりますが、教えていただければ幸いです。
KSwordOfHaste

2016/12/13 11:22

サービスとして動いているプログラムからは画面ありのプログラムは動かせない(動かすべきでない)と考えた方がいいと思います。それはjavaで作ったときの制限という意味ではなく、Tomcat以外のwebサーバーでも同様で「Windowsサービス一般にあてはまる」と思います。
hal_k

2016/12/14 00:44

やはり無理そうなんですね。。 ご回答ありがとうございました。
hal_k

2016/12/15 00:35

検討の結果、別の方法で対応することになりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問