• ベストアンサー

スタンドアロンJavaプログラム(Swing)の複数起動の抑止方法

TAKATONの回答

  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.1

>※ファイルに起動フラグを書出すという方法は考えてみましたが、 >クラッシュ(異常終了)したときに起動不可能になるためこの方法は使用 >できませんでした。 ならば、ソケット通信を使って、二重起動を監視してみてはいかがでしょうか? アプリケーション起動時にソケット通信を使って、他のアプリケーションへ メッセージを送信する。送信メッセージに対する返信がなければ、自分しか 起動されていないのでOK。返信があればNG。 自分しか起動されていないことがわかったら、次に、他のアプリケーションが 二重起動されるのを防ぐために、決められたポート番号でリスンする。 このポート番号に他のアプリケーションからメッセージが送信されてきた場合は、 既に起動済みである旨のメッセージを返す。 ただし、気をつけなければならないのは、決められたポートでリスンする処理は、 アプリのメインスレッドとは別のスレッドで行う必要があるということです。

koki_m
質問者

お礼

ご回答ありがとうございます。 今回はNo.2にgimmickさんから頂いた回答の「(2)ファイルチャネルのロックを利用する方法」を使うことにしました。 ソケット通信を使うことまでは気付きませんでした。 将来、別の機会に使うこともあるかもしれないので、動作確認のために実装を試みてみました。 その結果分かったことは、リスンのためにServerSocketでポートを開こうとすると、WindowsXP SP2の「Windowsファイアウォール」でブロックされてしまう場合もありそうです。 ※もしかしたらローカルホストに限定すればブロックされないのかもしれませんが、まだ深くは追求していません。 おかげ様で、問題解決方法の視野を広げることができました。 ありがとうございました。

関連するQ&A

  • Javaプログラムをサービスとして起動したい

    JavaのプログラムをWindowsのサービスとして起動したいと思っています。 ネットを調べてみると「Java Service Wrapper」などいくつか方法があるみたいですが、どうにもうまくいきません。 端的に、普段 "javaw -jar test.jar" で起動するコンパイル済みJAVAプログラムをサービス化するにはどうすればよいのでしょうか? お分かりになる方いらっしゃいましたらお願いします。 環境 OS: Windows 7 Professional 64bit CPU: AMD Phenom II Java: jdk1.6.0_23 (32bit) ※test.jarは改変せずにサービス化したいです ※ネットではタスクスケジューラと-Xrsオプションを使ってパソコン起動時にJavaを起動する方法も見受けられましたが、 タスクスケジューラは別件でエラーがでるので上手くいきません

  • Javaで作ったプログラムの実行方法

    Javaを勉強しているものです。 Javaで作ったプログラムを実行させる場合(テストなどではなくて)、Jarファイルにしてコマンドプロンプトから実行させるのが調べた中ではどうも一般的なようなのですが・・・。若しくはバッチファイルを作成して、そのアイコンをダブルクリックして実行など。 普通のソフトのように、アイコンをダブルクリックして実行できるような形にする方法はあるのでしょうか? ちなみに、作ったプログラムはCSV形式のデータを読み取る部分があり、実行時にそのファイルのありかを引数として与える必要があります。 ソフトを使えばEXEファイルに出来るようなのですが、そういったものを使用せずに出来る方法をご存知の方がいらっしゃいましたら、教えてください。

    • ベストアンサー
    • Java
  • javaアプリケーションの起動方法について

    通常WINDOWS上でJAVAアプリケーションのjarファイルをダブルクリックするとアプリケーションが立ち上がりますが、例えばシフトキーを押しながらダブルクリックして立ち上げるとGUIの表示を変えたりといった、条件分岐をしたいのですが、そもそもJAVAでこう言ったことが可能なのでしょうか?参考情報やサイトなどがあれば教えてください。

  • Java(jarファイル、開発方法、開発環境)について

    Javaの初心者です。 -状況- Jarファイルをもらいました。 そのファイルをダブルクリックすると、アプリケーションが起動します。 アプリケーションを変更したいので、Lhacaで解凍したら、classファイルがたくさん入っていました。classファイルは文字化けして読めません。 Eclipse, JBuilder, Textpadのどれかで開発しようと思っています。 (できればEclipse) -質問- 1、Javaプログラムは、classファイルだけでなくjavaファイルが必要だったと思うのですが、classファイルだけでも動くのですか? 2、jarファイルを解凍しないで、開発環境に取り込めますか? 3、Eclipse, Jbuilder, Textpadのどれが一番おすすめですか? 4、全部まとめると、このJavaプログラムを変更するには、どうすればいいですか? おバカな質問かもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Java
  • Java 条件によって起動させない

    お世話になります 宜しくお願い致します。 JavaでGUIアプリケーションを開発しております。 そこで、 デスクトップ上にjarのショートカットをダブルクリックで起動し GUIアプリを最小化します。 その後もういちどデスクトップ上の同じショートカットをダブルクリックで起動したときに 既に起動されているjarを最小化状態から通常表示にする(2回目は起動させない) というようなことはできるのでしょうか できるのであれば、参考資料または検索エンジンでどうやったら上記の事象を検索できるか 教えて頂ければ大変ありがたいです。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • jarが実行できない

    JDKをインストールしていますが、jarファイルをダブルクリックしても Could not find the main class. Program will exit. と表示され実行できません。 コマンドプロンプトでは java -jar Sample.jar で実行できるのですが。 どうすればよいか教えてください。

  • javaのswingコンポーネントについて質問です。

    javaのswingコンポーネントについて質問です。 javaをやり始めて2ヶ月ぐらいたちました。 今までアプレットとアプリケーションの両方をやりこちらはできたのですが 「swing」を使用したアプレット(JApplet)だけがアプレットビューアやhtmlで開いても実行できません。 わかるかたできれば教えていただければ幸いです。 追記 実行できないのはソースファイルにJAppletで組んだプログラムだけです。 本に記載されたソースプログラムやインターネットに上がっているソースプログラムを実行してみましたが これらもJAppletを使用したものだけができませんでした。

  • jarファイル実行時の環境変数の設定

    Macでjavaプログラムを作成しており,jarファイルを作成しています. このjavaプログラムが,別のjavaプログラムのjarファイルを,外部コマンドとして呼び出しており,日本語(SHIFT_JIS)の入力を処理して,日本語(SHIFT_JIS)の出力をします. java7になって,jarファイルのダブルクリックで起動すると,この外部プログラムが,文字化けした出力を出すようになりました. SHIFT_JISのターミナル上で,java -jar AAA.jar のようにプログラムを起動したときには問題なく動作することと,javaのコードが6から7になって,SHIFT_JISからutf-8に変わったことから,外部プログラムの起動時に環境の文字コードがSHIFT_JISとして動作して欲しいところ,utf-8として処理してしまっていることが原因と考えられます. そこで,jarファイルのダブルクリックから起動する場合について,この外部プログラムの起動時に,動作環境の文字コードがSHIFT_JISとして認識される方法をご教示いただけないでしょうか.

    • ベストアンサー
    • Java
  • jarファイルの起動方法

    jarファイルを作成して、ダブルクリックで起動できる ようにしたいのですが、作成したjarファイルをクリックしても何の反応もありません。エラーメッセージが 出るわけでもなく、ただ、プログラムが実行されないのです。jarファイルの作成過程は以下のとおりです。 jar cf temp.jar testclass.class jar ufm temp.jar manifest.txt マニフェストファイルの最後には改行をいれてあります。

    • ベストアンサー
    • Java
  • javaプログラムのimportについて

    Javaプログラムでサンプルプログラムを実行したいのですが、 com.sun.xml.parser.Resolver;とcom.sun.xml.tree.XmlDocument; をimportするところでエラーがでてしまいます。 javaのビルド・パスで、JARファイルを追加しようと考えております が、上記の2つを含むJARファイルが置いてあるサイト(URL)が 分かりません。どうか教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java