2012-01-25 40 views
1

私はデバッグ用に(jpdaを使用して)起動し、Tomcatをプログラムとして停止できるようにEclipseを設定しました。私がEclipseを始める/シャットダウンするときの初めての成功は成功です。 しかし、私はTomcatを起動しようとすると、私は次のエラーを取得する第二の時間:Eclipse内で外部ツールとしてtomcatを起動できません

FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) 
ERROR: transport error 202: bind failed: Address already in use 
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) 
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690] 

私は日食からシャットダウンTomcatを実行したときにポートが閉じられることはありませんだと思います。私のコンピュータを再起動すると、ポートが解放され、Eclipseからstart tomcatを再実行できます。 しかし、たびに私はそれを動作させるためにコンピュータを再起動することはできません..あまり根本的な解決策を探して...

これは私がプログラムとしてtomcatを実行するように私のEclipseを構成した方法です。

Configured the external tool configuration in eclipse 
catalina script points to catalina.bat on my Windows machine 
under arguments : jpda run 
In the Environment tab. 
"JPDA_ADDRESS" as the name and "8000" as the value 
"JPDA_TRANSPORT" as the name and "dt_socket" as the value 
"JAVA_OPTS" as the name and -server -XX:+UseParallelGC -Xmx768m -XX:MaxPermSize=160m -Djava.awt.headless=true as the value 

答えて

1

Eclipseの仕組みについてはわかりませんが、Tomcatを停止して起動するときと同じJPDAポートでバインドしようとしているようです。 Tomcatを起動すると、明らかにうまくいっていますが、停止しようとすると、ポートが既に使用されているため停止できません。

あり、これを解決するために多くの方法があり、これらは私が個人的に使うものです:

1)スタート/外部Tomcatを停止します。 tomcat/bin/catalina.sh jpda starttomcat/bin/catalina.sh stopは変更なしでそのまま使用できます。おそらく、Eclipseは外部スクリプトを起動できますか?

2)TomcatをEclipseの簡単なJavaプログラムとして起動/停止します。この方法では、プログラムが他のJavaプログラムと同様にデバッグ可能であるため、リモートデバッグは必要ありません。私のIntelliJの設定は次のようになります。

メインクラス:org.apache.catalina.startup.Bootstrap

VMパラメータ:-ea -cp $CLASSPATH:/path/to/tomcat/bin/bootstrap.jar -Dcatalina.base="/path/to/tomcat" -Dcatalina.home="/path/to/tomcat" -Djava.io.tmpdir="/path/to/tomcat/temp" -noverify -Xmx400M -XX:MaxPermSize=400M

プログラム・パラメーター:start

を作業ディレクトリ:/path/to/tomcat

その後、単にJavaプロセスを強制終了することでTomcatを停止するか、またはプログラムパラメータとしてstopと同様の環境を作成して正常にシャットダウンします。 catalina.shの内部を見ると、このスクリプトはすべてこれらのパラメータをすべて準備してTomcatを同じ方法で起動することです。

関連する問題