2009-08-18 63 views
2

実行可能なjarファイルがあります。一度起動すると、タスクマネージャーに行き、javawプロセスを終了するだけです。初心者のユーザーが使用できるUIを使って、より洗練された方法で止めることができますか?実行可能なjarファイルの停止

+0

コードにアクセスできますか、これはサードパーティのアプリケーションですか? –

+0

私はアプリケーション全体を作ったので、コードにアクセスできます。 –

答えて

1

コードを制御するので、System.exitを使用して終了できるようにGUI内に何かを配置する必要があります。あなたはスイングを使用していたのであれば、あなたのような何かを行うことができます:

JButton b = new JButton("Exit"); 
b.setActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e) { 
    System.exit(0); 
    } 
} 
+0

よくある問題は、ボタンを置くことができるGUIアプリケーションがないことです。 jarファイルを停止する別のGUIアプリケーションを作成することもできますが、このGUIは別のjvmで動作するため、他のアプリケーションとのインタフェースができない可能性があります。 –

1

別の有用な技術を、ユーザーが(他のシステム上と同等の)Windows上のXボタンをクリックしたときに起こるwindowClosing、をリッスンすることです:

addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { 
     System.exit(0); 
    } 
}); 

私は通常、アプリケーションのためのフレームを拡張するクラスのコンストラクタであることを置きます。例えばそのサービスならば - - そして、あなたは、ローカルネットワークへのアクセスを使用することができ、アプリケーションがGUIを持っていない場合は

setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); 
+0

または、単に 'setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)'を実行し、余分な 'WindowListener'を避けることができます。 –

+0

これは、ボタンを置くことができるGUIアプリケーションがないという問題があります。 jarファイルを停止する別のGUIアプリケーションを作成することもできますが、このGUIは別のjvmで動作するため、他のアプリケーションとのインタフェースができない可能性があります。 –

+0

真実ですが、そのような方法で制御できないクリーンアップが必要な場合もあります。 – Jonathan

0

:あなたはJFrameのを使用している場合

、あなたも、この行を追加する必要がありますオペレーティングシステムがサービスの開始と停止に通常使用する標準のIPC(プロセス間通信)メカニズムをシミュレートします。

あなたがApacheのCommonsのデーモンのプロジェクトで見つけることができるのは非常に人気の実装:すべての非デーモンスレッドが終了したときに終了しますhttp://commons.apache.org/daemon/

+0

launch4Jを使用してjarをexeにまとめましたが、サービスとして動作させたいと思っていましたが、Java Service Wrapperを試しましたが何らかの理由で私のために動作しません。私はあなたのリンクを調べます。しかし今の私のアプリケーションはサービスではありません。 –

+0

サービスであるかどうかにかかわらず、ユーザーインターフェイスがない場合は、ローカルネットワークアクセスによって制御するのが最善の方法です。ローカルマシンからの接続のみを受け付けるリスニングソケットを開き、コマンドが別のスレッドに到着するのを待ちます。 – Jonathan

+0

Commons Daemonは既にあなたのためにそれを実装しています - 彼らはその方法論のために "サーバ"と "クライアント"の両方を提供しています。 – Guss

0

アプリケーション。これを行う方法は、1つのデーモン以外のすべてのスレッドを作成し、最後のスレッドをシグナル停止まで待機させることです。

0

私は最終的に私の問題の解決策を見つけました。私は閉じることができるGUIを持っていないので、私はコンソールを持っていません。最善の方法は、java.awtパッケージでSystemTray APIを使用することです。アイコンを右クリックして終了してください。

関連する問題