2013-02-12 14 views
7

私はハックしていましたが、しばらくの間グーグルグーグルで行きましたが、さまざまなアプリケーションサーバーを使って古いバージョンのintellij用に書かれたようないくつかのstatckオーバーフロースレッドが見つかりました。彼らはあなたを教えて上記の1または他の後に続いてIntelliJでリモートJettyをデプロイ&デバッグする12

Error occurred during initialization of VM 
Could not find agent library: libjdwp:transport.jnilib (searched /Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Libraries:/System/Library/Java/Extensions:/Library/Java/Extensions:.) 

:通常、彼らは

-agentlib:jdwp:transport=dt_socket,address=51887,suspend=n,server=y 

のようなものを使用することを提案している。しかし、私はこれを取得

java -Xdebug -Xrunjdwp:transport=dt_socket,address=51887,suspend=n,server=y 

One answerを入力するように指示します"Edit Configurations> jetty> remote and localhost 51887"(ポート番号が異なる)のようなもの

しかし、12で、あなたがリモートを選択した後に着陸するページには、たくさんのオプションがあり、JNDIポートを要求しています。別のタブのjdwpポートではなく、上記のjdwpパラメータを示します。 JNDIポートのビットを研究する

、一般

-Dcom.sun.management.jmxremote= \ 
-Dcom.sun.management.jmxremote.port=1099 \ 
-Dcom.sun.management.jmxremote.ssl=false \ 
-Dcom.sun.management.jmxremote.authenticate=false\ 

は私があまりにもやった...あなたのコマンドラインに次のように引数を追加するための指示を与えると私は、Javaで開催されたポート1099(使用してlsofを見ることができます)そして私は1099にtelnetすることができるので、私はJVMが聞いていることを知っています。 (私たちは、誰もパスワードなしでネットワーク上の任意のJavaコードをあなたのコンピュータにインストールするためのポートを開くことを心配しないようにしようとしている)

しかし、私がしようとするとIntellij私は(彼らは判読不能です)のwiresharkでポート1099をスヌープするとき、私は1099上でのJava RMI通信を見ることができます

Yes, I know it's an ancient version of jetty

:展開とデバッグ、それは私に次のようなメッセージを与えます。明らかに、コミュニケーションはIntellijにとっては満足のいくものではないので、私はJettyにそれをうまくさせるために必要なことがあるかどうか疑問に思っています。 Jettyのバージョンを変更することは現在オプションではないので、そこに行かないように注意してください。

また、アーティファクトを削除してmakeを無効にして、デバッガに接続しようとしましたが、同じ赤いバルーンとエラーメッセージが表示されるため、JNDI(ポート1099)の部分が必要です。

誰かが私が間違っているのを見ているのですか、これを動作させるために何か他のことを知っていますか?

(それはこれに似たものである場合、私は思ったんだけど:http://youtrack.jetbrains.com/issue/IDEA-65746 JBossの問題)

編集:this google groups postおかげで、私はあなたがいない場合、デバッガが接続されて得ることが可能であることを発見しましたEdit Configurations> +> jetty> remoteを指定しますが、Edit Configurations> +> remoteを選択しますが、デバッグとデプロイは後で実行するので、半分の解決策です。

+0

私はwireshark経由で1099への接続が見えるという事実は、DNSの問題の可能性を排除すると思います。明らかに接続が行われましたが、通信が失敗しました – Gus

答えて

5

Jetty remoteの設定では、local設定を使用してIDEAからJettyを直接起動すると自動的に実行されるいくつかの手動ステップが必要です。

あなたは絶対にremote設定を使用する必要がある場合は、次の手順試してください:IDEA桟橋のリモート実行構成のServerタブのRemote stagingセクションで

  • TypeHostためSame file systemを指定します
  • contextsセクションのLocal pathフィールドの<Jetty home>/contextsフォルダへのパスを指定します。

(あなたはIDEAよりも、別のマシン上で実行して桟橋を持っている場合、設定が異なりますが、私はそれはあなたのケースでは同じマシンだと仮定)

桟橋プロセスに次のVMパラメータを渡します

-Dcom.sun.management.jmxremote= 
-Dcom.sun.management.jmxremote.port=<JNDI port> 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-DOPTIONS=jmx 

<JNDI port>値は、IDEAの桟橋の実行構成のJNDI port分野

が目に次の構成ファイルをパスで指定されたものと同じでなければなりません(コマンドラインで)電子の桟橋プロセス:

  • etc/jetty-jmx.xml
  • etc/jetty.xml

デバッグする必要がある場合、あなたはまた、IDEAの桟橋の実行コンフィギュレーションから取られた桟橋プロセスVMパラメータに渡す必要があります。Startup/Connectionタブを選択してDebugTo debug remote server JVM ...

の下のリスト項目を選択します。必要なすべてのオプションを指定してJettyプロセスを開始するサンプルコマンドラインを示します。

java -Xdebug -Xrunjdwp:transport=dt_socket,address=60208,suspend=n,server=y -DSTOP.PORT=0 -Dcom.sun.management.jmxremote= -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -DOPTIONS=jmx -Dfile.encoding=UTF-8 -classpath start.jar etc/jetty-jmx.xml etc/jetty.xml 
+1

は、org.mortbay.start.Mainを指定する必要はないことがわかりました。これは素晴らしい、ありがとう! – Gus

+0

情報をありがとう、コマンドラインを修正しました – CrazyCoder

+0

ローカル設定を使用してjettyを実行しようとしましたが、「メインファイルは含まれていません。 – Shwetanka

関連する問題