Jetty WTP plugin for Eclipseを使用して、JettyにJSPページをデプロイしようとしています。しかし、以下のエラーが表示されます。 Jettyがjavac
を見つけられないようです。 EclipseのJetty WTPプラグインに対して行う必要がある設定はありますか、またはこれを修正するにはどうすればよいですか?
プロジェクトを_.war
_-ファイルとして_jetty\webapps
_としてエクスポートし、_Java -jar start.jar
_を使用してJettyを手動で起動すると、JSPページは正常に機能します。しかし、説明したようにEclipse用のJetty WTPプラグインを使用してデプロイすると機能しません。
_Java_HOME
_をC:\Program Files (x86)\Java\jdk1.7.0_01
に設定し、Windows 7でJetty 8.0.4を使用しています。
サーブレットは現在の設定で正常に機能しています。 JSPページでこれを解決する方法に関する提案はありますか?
_HTTP ERROR 500
Problem accessing /MyJavaWeb/formProcess. Reason:
PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
Caused by:
org.Apache.jasper.JasperException: PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
at org.Apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.Java:92)
at org.Apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.Java:378)
at org.Apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.Java:119)
at org.Apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.Java:208)
at org.Apache.jasper.compiler.Compiler.generateClass(Compiler.Java:384)
at org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:453)
at org.Apache.jasper.JspCompilationContext.compile(JspCompilationContext.Java:625)
at org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:374)
at org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:492)
at org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.Java:848)
at org.Eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.Java:558)
at org.Eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.Java:488)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:119)
at org.Eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.Java:520)
at org.Eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.Java:233)
at org.Eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.Java:973)
at org.Eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.Java:417)
at org.Eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.Java:192)
at org.Eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.Java:907)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:117)
at org.Eclipse.jetty.server.Dispatcher.forward(Dispatcher.Java:271)
at org.Eclipse.jetty.server.Dispatcher.forward(Dispatcher.Java:98)
at com.example.FormProcessServlet.doPost(FormProcessServlet.Java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.Java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.Java:848)
at org.Eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.Java:558)
at org.Eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.Java:488)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:119)
at org.Eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.Java:483)
at org.Eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.Java:233)
at org.Eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.Java:973)
at org.Eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.Java:417)
at org.Eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.Java:192)
at org.Eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.Java:907)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:117)
at org.Eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.Java:250)
at org.Eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.Java:149)
at org.Eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.Java:110)
at org.Eclipse.jetty.server.Server.handle(Server.Java:346)
at org.Eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.Java:442)
at org.Eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.Java:941)
at org.Eclipse.jetty.http.HttpParser.parseNext(HttpParser.Java:801)
at org.Eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.Java:224)
at org.Eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.Java:51)
at org.Eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.Java:586)
at org.Eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.Java:44)
at org.Eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.Java:598)
at org.Eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.Java:533)
at Java.lang.Thread.run(Unknown Source)
_
Jan Bartelが提案したように、 Jetty:JSPの構成方法 :
eclipseのstart.ini
-ファイルに以下の行を追加することにより、正常に機能します。
-Dorg.Apache.jasper.compiler.disablejsr199=true
私も、EclipseのインストールとJetty Mavenプラグイン(Eclipse内からJettyを起動するために使用)で突然org.Apache.jasper.JasperException: PWC6345
を取得しました。
その理由は、直前にJDKインストールを更新したためです。 Eclipse内では、これにより、「Installed JRE」が、本格的なJDKインストールではなく、プレーンなJREインストールを指すように変更されました。 Jasperにはjavac
(JREによって提供されない)が必要なので、JasperにはJDKのインストールが必要です。
私の場合、解決策はEclipseにJDKインストールを提供することでした。これを行うには、ウィンドウ->設定-> Java->インストール済みJRE)を選択します。ここで、追加...をクリックし、ポイントしますJDKインストールへ(私の場合、JRE homeはC:\Program Files (x86)\Java\jdk1.7.0_17
)。完了をクリックしてからインストール済みJREに戻る概要、- remove古いJRE参照および新しく追加されたJDKインストールを選択。
Run-Jetty-Runプラグインでwebappを実行すると、PWC6345エラーが発生しました。
修正は、環境設定の実行環境設定を変更することでした。 Java 7を使用しているので、JavaSE-1.7の設定を変更する必要がありました。他の実行環境も同様に動作するでしょう。
ウィンドウ->設定-> Java->インストールされたJRE->実行環境
左側でJavaSE-1.7を選択->右側で* jdk * 1.7.x_xxを選択
[OK]を、多くの検索の後にこれを解決しました。
Jdkをダウンロードし、Java_HOMEがこのjdkを指すようにします。このjdkフォルダー内には、。/ binと./jre/binがあります。/binからjavacをコピーし、。/ jre/binに貼り付けます[コピーは切り取りません]
EclipseでRun-> External-Tools-> External-Tools-Configurationsを選択し、左側のペインでプロジェクトのbuild.xmlを選択し、右側のペインで[JRE]タブをクリックします。インストール済みのJREをクリックし、前の手順でjdkを追加します。完了したら、この新しいJRE(jdk1.6.0_31)を「個別のJRE」として選択し、下部の「適用」をクリックして実行します。
これは、Eclipseでantを使用してjetty:runを実行していることを前提としています。
このスレッド が提案するため、奇妙です:
解決策はパッケージjdk7-openjdkをインストールするでした。
おそらく、これを依存関係のリストに追加する必要があります(または、solr自体ではなく、桟橋のために)。
しかし、openjdk7のバイナリが簡単に入手できないWindowsでは、これはあまり役に立ちません。
(「 Windows OSのOpenJDKの可用性 コメント、 eckes いくつかの Windows用のopenjdkバイナリ の一部としての言及」 Build b146 。ただし、前述のリリースはメンテナンスされていません)
バグレポート で埋められた OP Jonas は、 Eclipse wikiページ「Jetty/Howto/Configure JSP」 への簡単な参照で閉じられます。
私は同じ問題を抱えています。 where Java
を実行すると、出力は次のようになります。
C:\ Windows\System32\Java.exe
D:\ Program Files\Java\jdk1.7.0_25\bin\Java.exe
もちろん、最初のものは間違っています。したがって、私の問題はPATHにあります。これを修正するには、C:\ Windows\System32 \ディレクトリのJava.exeを削除するか、最初のエントリの前に2番目のエントリを配置する必要があります。
したがって、この問題が発生した場合は、jdkのPATHを確認してください。私の問題と解決策が何らかの形で役立つことを願っています。
あなたは植物のような解決策を持っていますが、start.iniを修正するよりも良い解決策があると思いました
私は同じ問題を抱えていましたが、64ビット用のJDK7を持っていたのに、32用のJDK7を持っていなければならなかったからかもしれないことに気付きました。
そこで、32ビット用のJDK7をダウンロードして使用することで問題を解決しました。
また、あなたはまだする必要があります
ちなみにWindowsで実行しています...
Oracle JDK 1.7.0_60を使用してWindows 7 cmd(またはバッチファイル)からjetty-runner 9.2.1をスタンドアロンで実行すると、PWC6345エラーが発生しました。誰かに役立つ場合のために、ここで回避策を残します...
JDKをインストールした後、「where Java」を実行すると、2つの異なるJava.exeパスが表示されました。1つ目はWindowsシステムフォルダーにあり、2つ目はJDKフォルダーにあります(これはパスに手動で追加しました)。これらは両方とも、実際には同じJDKインストーラーによってインストールされます。システムフォルダー内のJava.exeが優先され、完全なJDKが検出されなくなりました。
JDK binフォルダー(例: "C:\ Program Files\Java\jdk1.7.0_60\bin")をパスに配置before他のシステムパスで問題が修正されました。
サーバーにwarパッケージをデプロイすると、このエラーが発生しました。
私のデプロイコマンドは次のとおりです(適用されるWebコンテナがあります):
Java -jar jetty-runner.jar --port 8020 xx.war
この答えを書いたのは、ほぼ1日混乱していたからです。上記の方法をいくつか試しましたが、失敗しました。
最後に、サーバーにはjreのみがあり、完全なjdkではないことがわかりました。
$ls /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64
jre
利用可能なjdkを検索して修正し、インストールします。
$yum search Java | grep 'Java-'
$Sudo yum install Java-1.8.0-openjdk-devel.x86_64
(-devel
)
環境変数JRE_HOME
を設定した場合は、設定を解除するか削除してからサーバーを再起動してください。
Java_HOMEの更新(上記を参照)に加えて...コマンドラインからこのエラーが発生した場合(dosウィンドウからJettyサーバーを起動するなど)、ウィンドウがJava.exeを見つけている場所を確認します。
java
Windowsがjreへのパスを表示して戻ってきたら、PATHを確認してください。多くの場合、%PATH%にはjdkではなくjreを指すパスが含まれています。
この行を、Eclipseフォルダー内にある「Eclipse.ini」ファイルに追加しました。
-vm C:\ Program Files\Java\jdk1.8.0_131\bin\javaw.exe
また、EclipseでJREパスを変更します
windows->設定-> Java->インストールされたJRE
jdkまでのパスを提供
C:\ Program Files\Java\jdk1.8.0_131
Liferay 7では、jdkを使用してサーバーのランタイム環境をjreからjreに変更することで、このエラーを修正しました。