2017-07-19 21 views
2

NetBeansには、引数をとるmain関数で始まるプロジェクトがあります。私が「停止」ボタンを押すと、プロジェクトは実行を続けますが、もう出力はありません。 現在、コンソールから手動でプロセスを停止する必要があります。Netbeansで開始されたmavenプロジェクトを停止する方法

私のプロジェクト、maven setup、またはNetBeansの設定を変更して、停止したときにプロセスが停止するようにするにはどうしたらいいですか?

私はファイナライザやShutdownHooksが呼び出されていないプロセスで暮らすことができます。

public class Main { 
    public static void main(String[] args) { 
     System.out.println("args: " + Arrays.asList(args)); 
     new Main().action(); 
    } 

    private void action() { 
     Date start = new Date(); 
     long endTime = start.getTime() + 600000; 
     Date end; 
     do { 
      synchronized (Thread.currentThread()) { 
       try { 
        Thread.currentThread().wait(1000); 
        System.out.println("PING"); 
       } catch (InterruptedException iex) { 
        return; 
       } 
      } 
      end = new Date(); 
     } while (end.getTime() < endTime); 
    } 
} 

私はそれだけでNetBeansの停止ボタンを使用して死にたい:

は、このクラスを検討してください。

答えて

1

NetBeansの出力で「停止」を押すと、NBはmavenプロセスを停止しますが、mavenは実際のプログラム出力を生成していたので、stopコマンドはプログラムに渡されません。

NetBeansはデフォルトでexec-maven-pluginを 'exec'ゴールで呼び出します。 'java'ゴールに変更すると、新しいプロセスはありません。以下の変更の後、プロジェクトの[プロパティ]の[実行]セクションは空で無駄になります。このシナリオで 'System.exit'などと呼ぶとどうなるかはテストしませんでした。

ここから、ここから自分でバージョン番号を変更するよう注意しなければならないことにも注意してください。

あなたは、右のプロジェクトをクリックし、プロジェクトウィンドウに移動Propertiesに行くとアクション要素と実行プロジェクトエントリを選択する必要があります。 process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:javaから(javaに最後にexecを変更):あなたは目標を実行

  1. を変更する必要が

    Maven exec:exec in Netbeans

    :それは次のようになります。

  2. プロパティの設定:
  3. exec.mainClass=de.steamnet.stopfromnetbeans.Main exec.classpath=%classpath exec.args=First Second 'Third Space'

それは次のようになります。今から

Maven exec:java in Netbeans

あなたがヒットしたときに、Mavenは「そう、新しいプロセスをforkしません実際にプロセスを停止します。

関連する問題