web-dev-qa-db-ja.com

「PWC6345:javacの呼び出し中にエラーが発生しました。」 Jetty WTPプラグインを使用してJSPページをJettyにデプロイする際のエラー

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)
_
36
Jonas

Jan Bartelが提案したように、 Jetty:JSPの構成方法

eclipseのstart.ini-ファイルに以下の行を追加することにより、正常に機能します。

-Dorg.Apache.jasper.compiler.disablejsr199=true

enter image description here

41
Jonas

私も、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 homeC:\Program Files (x86)\Java\jdk1.7.0_17)。完了をクリックしてからインストール済みJREに戻る概要、- remove古いJRE参照および新しく追加されたJDKインストールを選択

25
Abdull

Run-Jetty-Runプラグインでwebappを実行すると、PWC6345エラーが発生しました。

修正は、環境設定の実行環境設定を変更することでした。 Java 7を使用しているので、JavaSE-1.7の設定を変更する必要がありました。他の実行環境も同様に動作するでしょう。

ウィンドウ->設定-> Java->インストールされたJRE->実行環境

左側でJavaSE-1.7を選択->右側で* jdk * 1.7.x_xxを選択

5
Peter Lamberg

[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を実行していることを前提としています。

4
ydntn

このスレッド が提案するため、奇妙です:

解決策はパッケージjdk7-openjdkをインストールするでした。
おそらく、これを依存関係のリストに追加する必要があります(または、solr自体ではなく、桟橋のために)。

しかし、openjdk7のバイナリが簡単に入手できないWindowsでは、これはあまり役に立ちません。
(「 Windows OSのOpenJDKの可用性 コメント、 eckes いくつかの Windows用のopenjdkバイナリ の一部としての言及」 Build b146 。ただし、前述のリリースはメンテナンスされていません)

バグレポート で埋められた OP Jonas は、 Eclipse wikiページ「Jetty/Howto/Configure JSP」 への簡単な参照で閉じられます。

3
VonC

私は同じ問題を抱えています。 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を確認してください。私の問題と解決策が何らかの形で役立つことを願っています。

3
Daniel

あなたは植物のような解決策を持っていますが、start.iniを修正するよりも良い解決策があると思いました

私は同じ問題を抱えていましたが、64ビット用のJDK7を持っていたのに、32用のJDK7を持っていなければならなかったからかもしれないことに気付きました。

そこで、32ビット用のJDK7をダウンロードして使用することで問題を解決しました。

また、あなたはまだする必要があります

  • JREではなくJDKを使用する
  • Java_HOMEを設定します

ちなみにWindowsで実行しています...

3
Charestm

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他のシステムパスで問題が修正されました。

2
amichair

サーバーに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

0
Junjie

環境変数JRE_HOMEを設定した場合は、設定を解除するか削除してからサーバーを再起動してください。

0
Deep Shah

Java_HOMEの更新(上記を参照)に加えて...コマンドラインからこのエラーが発生した場合(dosウィンドウからJettyサーバーを起動するなど)、ウィンドウがJava.exeを見つけている場所を確認します。

java

Windowsがjreへのパスを表示して戻ってきたら、PATHを確認してください。多くの場合、%PATH%にはjdkではなくjreを指すパスが含まれています。

0
Robert

この行を、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に変更することで、このエラーを修正しました。

0
user7224471