私はこれを試みています tutoial 。新しいプロジェクトを作成して実行しました。 Tomcatは起動しましたが、その後は何も起こりませんでした。ブラウザhttp://localhost:8080
で手動で開くと、Tomcatホームページが表示されます。サーバーを起動できることを意味します。ただし、index.jspを開くことができません。開始後の画面は次のとおりです。 screenshot ご覧のとおり、プロジェクトは実行されていますが、渡された環境変数に関する情報はありません。ログはありません。
Tomcat 7.0.27を使用します
アイデア12.1.6
openSUSE 12.2で
TomcatのHOMEフォルダーは/usr/share/Tomcat
です
問題がありました:Ideaはconfファイルを/ usr/share/Tomcat/confから/home/loco/.IntelliJIdea12/system/Tomcat//confにコピーできませんでした。 chmod 777 *
で/usr/share/Tomcat and the problem gone.
を実行しました
また、Tomcatの起動方法を変更しました。デフォルト値でした
/usr/share/Tomcat/bin/catalina.sh run
に変更しました
/usr/share/Tomcat/bin/catalina.sh start
他のすべての手順は、チュートリアルに従って行われます。
この問題は、Tomcatスタートアップスクリプトセット(最も一般的にはsetenv.sh
/setenv.bat
)内のスクリプトが元の値を含めずにJava_OPTS
環境変数をオーバーライドするときに発生します。 IDEAはJava_OPTS
を設定して、TomcatにステータスやデプロイメントなどのJMXリクエストを1099でリッスンするように指示します。
壊れるsetenv.sh
からの行の例:
export Java_OPTS="-XX:MaxPermSize=512m -Xmx1024m"
修正されたバージョン:
export Java_OPTS="$Java_OPTS -XX:MaxPermSize=512m -Xmx1024m"
Windows setenv.bat
ファイルからの同じサンプル行:
set Java_OPTS=-XX:MaxPermSize=512m -Xmx1024m
修正済み:
set Java_OPTS=%Java_OPTS% -XX:MaxPermSize=512m -Xmx1024m
IDEA内からのみTomcatを実行する場合は、他の人が提案したようにsetenv
スクリプトから行を削除し、jvmオプションをIDEA実行構成)内に配置できます。
$ CATALINA_HOME/binにあるsetenv.batを削除して、これを修正しました。内部の設定は次のとおりです。
set Java_OPTS=-server -Xmx768m -XX:MaxPermSize=256M
これらのオプションはもう必要なかったので、ファイルを削除しました。 pruleの答えにあるように、これらのオプションをIntellij Run configに移動できます。ファイルを削除した後、IntelliJ内で展開は正常に機能しました。
編集:これがなぜ機能するかについてのより良い答えについては、 codelarkの以下の答え 。をチェックしてください。また、彼の方法を使用すると、 setenv.sh/setenv.batファイル。IntelliJIDEA内からTomcatを実行するだけではない場合に便利です。
setenv.sh
から$CATALINA_HOME/bin
を削除することもうまくいきました。 Tomcat7/Ubuntu/IntelliJ 12を実行しています
setenv.sh
がbinフォルダーにある場合、IJ内の起動時にログに表示されます:
/usr/local/Tomcat/Apache-Tomcat-7.0.52/bin/catalina.sh run
[2014-07-28 02:41:39,274] Artifact TomcatDebug:war exploded: Server is not connected. Press 'Deploy' to start deployment.
Jul 28, 2014 2:41:40 PM org.Apache.catalina.core.AprLifecycleListener init
odonovanj@ubuntuj:/usr/local/Tomcat/Apache-Tomcat-7.0.52$ Sudo netstat -tulpn|grep 2928
tcp6 0 0 :::8080 :::* LISTEN 2928/Java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2928/Java
tcp6 0 0 :::8009 :::* LISTEN 2928/Java
削除後、ログに次のように表示されます。INFO:76ミリ秒でのサーバーの起動サーバーへの接続[2014-07-28 02:44:35,847] 07-28 02:44:36,512]アーティファクトTomcatDebug:warが爆発しました:アーティファクトが正常にデプロイされました
odonovanj@ubuntuj:/usr/local/Tomcat/Apache-Tomcat-7.0.52$ Sudo netstat -tulpn|grep 2346
tcp6 0 0 :::8080 :::* LISTEN 2346/Java
tcp6 0 0 :::50044 :::* LISTEN 2346/Java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2346/Java
tcp6 0 0 :::8009 :::* LISTEN 2346/Java
tcp6 0 0 :::1099 :::* LISTEN 2346/Java
tcp6 0 0 :::52268 :::* LISTEN 2346/Java
setenv.sh
が$Java_OPTS
をオーバーライドして、ポート1099で実行されているJNDIを妨害しているようです。
file->project structure->Project SDK
次に、SDKを再構成します。
これで本当に問題が解決しました。
私はこの理論についてあまり理解していませんが、同じエラーを受け取りました。少し待った後、次のようなメッセージが表示されました。
アーティファクトの展開中にエラーが発生しました。詳細については、サーバーログを参照してください。
「Tomcat localhost.log」を意味すると思われるログファイルを見つけましたが、そこに「NoClassDefFoundError」と「ClassNotFoundException」のスタックトレースがありました。私はMavenの更新と「プロジェクトの再構築」を行いましたが、それでうまくいきました。
(3.2)JRE_HOMEまたはJava_HOMEの設定(必須)
これらの変数は、Tomcatを起動するために使用されるJava Runtime EnvironmentまたはJava Development Kitの場所を指定するために使用されます。
JRE_HOME変数は、JREの場所を指定するために使用されます。 Java_HOME変数は、JDKの場所を指定するために使用されます。
Java_HOMEを使用すると、JRE_HOMEの使用時には許可されない特定の追加の起動オプションにアクセスできます。
JRE_HOMEとJava_HOMEの両方が指定されている場合、JRE_HOMEが使用されます。
Tomcat 7.0.27でこの問題が発生しました。 Tomcat 8.0.21にアップグレードし、問題を解決しました:)
Tomcat BINディレクトリに移動しますコマンドで実行します次のコマンドをプロンプトします
cd Tomcat-9991\bin
catalina.bat run
私が得た出力は
Exception in thread "main" Java.lang.UnsupportedClassVersionError: org/Apache/catalina/startup/Bootstrap : Unsupported major.minor version 52.0
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(ClassLoader.Java:800)
at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:142)
at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:449)
at Java.net.URLClassLoader.access$100(URLClassLoader.Java:71)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:361)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:355)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:354)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:425)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:308)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:358)
at Sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.Java:482)
Java TomcatとJDKの間にバージョンの問題があることを示し、これも設定していました。
正しいバージョンのJDKにチェーンすることで修正できました。
簡単な方法は、そのファイルのポート番号を変更することです:
-Dcom.Sun.management.jmxremote.port=1099
ポートに注意してください、デフォルトは1099ですが、JMXを使用する場合、ユーザーまたは誰かによって変更される可能性があるため、単にポートを変更するだけでかまいません。Tomcatbinフォルダーから削除する必要はありません。
変更した場合/etc/hosts
ファイル、行を追加する必要がありますlocalhost YOU_USER_NAME
それに。
EclipseからIDEAにプロジェクトをインポートしようとすると、この問題が発生します。
setter.sh
には$CATALINA_HOME/bin
がありません。 IDEAのProject Structure
およびRun Configuration
の設定は問題ありません。プロジェクト全体はEclipseで正常に動作しますが、IDEAでこのエラーを表示します。
私の解決策は、.idea
フォルダーを削除し、プロジェクト全体を再インポートすることです。この問題の正確な原因はわかりませんが、私にとってはうまくいきます。
ログは次のようになります。
/Library/Tomcat/bin/catalina.sh run
[2015-09-22 12:40:57,906] Artifact bookstore:war exploded: Server is not connected. Deploy is not available.
XXXXXX
Connected to server
[2015-09-22 12:40:58,848] Artifact bookstore:war exploded: Artifact is being deployed, please wait...
XXXXXX
[2015-09-22 12:41:07,862] Artifact bookstore:war exploded: Artifact is deployed successfully
[2015-09-22 12:41:07,863] Artifact bookstore:war exploded: Deploy took 9,015 milliseconds
もう1つの理由として、Tomcatパスに空白または「(」が含まれている場合、このエラーも発生します。Tomcatパスの名前を変更してください。
Catalina.batでJava_OPTSを設定したときに、この問題が発生しました。これを削除すると、Tomcatが期待どおりに起動およびデプロイされました。 Java_OPTS値は、Intellij Run configで設定できます。