wake-up-neo.net

"PWC6345: Beim Aufrufen von Javac ist ein Fehler aufgetreten." Fehler bei Verwendung des Jetty WTP-Plugins zum Bereitstellen einer JSP-Seite auf Jetty

Ich versuche, eine JSP-Seite auf Jetty bereitzustellen, indem ich das Jetty WTP-Plugin für Eclipse verwende. Aber ich bekomme den Fehler unten. Es sieht so aus, als könnte Jetty javac nicht finden. Gibt es irgendwelche Einstellungen, die ich für das Jetty WTP-Plugin in Eclipse vornehmen muss, oder wie kann ich das beheben?

Die JSP-Seite funktioniert gut, wenn ich mein Projekt als .war- Datei in jetty\webapps exportiere und Jetty dann manuell mit Java -jar start.jar starte. Es funktioniert jedoch nicht, wenn ich das Jetty WTP-Plugin für Eclipse wie beschrieben bereitstelle.

Ich habe meinen Java_HOME auf C:\Program Files (x86)\Java\jdk1.7.0_01 gesetzt und benutze Jetty 8.0.4 unter Windows 7.

Servlets funktionieren mit dem aktuellen Setup einwandfrei. Anregungen zur Lösung dieses Problems für JSP-Seiten?

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)
37
Jonas

Wie Jan Bartel vorschlug, von Jetty: So konfigurieren Sie JSP :

durch Hinzufügen der folgenden Zeile in der Datei start.ini- in Eclipse funktioniert es einwandfrei.

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

enter image description here

41
Jonas

Auch ich bekam plötzlich den org.Apache.jasper.JasperException: PWC6345 mit meiner Eclipse-Installation und dem Jetty Maven Plugin (das ich zum Starten von Jetty von Eclipse aus benutze).

Der Grund war, dass ich meine JDK-Installation kurz zuvor aktualisiert habe. In Eclipse hat dies dazu geführt, dass "Installed JRE" so geändert wurde, dass es auf eine einfache JRE-Installation verweist, anstatt auf eine vollwertige JDK-Installation. Für Jasper ist eine JDK-Installation erforderlich, da Jasper javac (die nicht von JRE bereitgestellt wird) benötigt.

In meinem Fall bestand die Lösung darin, Eclipse mit der JDK-Installation auszustatten. Wählen Sie dazu Window -> Preferences -> Java -> Installierte JREs . Klicken Sie hier auf Add ... , und zeigen Sie auf Ihre JDK-Installation (in meinem FallJRE homesollte aufC:\Program Files (x86)\Java\jdk1.7.0_17zeigen). Klicken Sie auf Fertig stellen . Dann zurück in Installierte JREs,remove die alte JRE-Referenz unddie neu hinzugefügte JDK-Installationauswählen.

25
Abdull

Ich habe die Fehlermeldung PWC6345 erhalten, als ich eine Webapp mit Run-Jetty-Run-Plugin ausführte.

Das Problem bestand darin, die Einstellungen für die Ausführungsumgebung in den Voreinstellungen zu ändern. Da ich Java 7 verwende, musste ich die Einstellung für JavaSE-1.7 ändern. Wahrscheinlich werden sich andere Ausführungsumgebungen ähnlich verhalten.

Fenster -> Einstellungen -> Java -> Installierte JREs -> Ausführungsumgebungen

Wählen Sie links JavaSE-1.7 aus -> Wählen Sie rechts * jdk * 1.7.x_xx aus

5
Peter Lamberg

Ok, das wurde nach langem Suchen gelöst.

Laden Sie ein beliebiges jdk herunter und geben Sie Java_HOME auf dieses jdk . In diesem jdk-Ordner finden Sie ./bin und ./jre/binCopy das javac aus ./bin und fügen Sie es in ./jre/bin [erinnern Kopie nicht ausschneiden]

Wählen Sie nun in Eclipse Run-> External-Tools-> External-Tools-Configurations die build.xml für Ihr Projekt im linken Bereich aus und klicken Sie im rechten Bereich auf die Registerkarte JRE. Klicken Sie auf Klicken Sie auf installierte JREs, und fügen Sie im vorherigen Schritt die Jdk hinzu. __ Wählen Sie anschließend diese neue JRE (jdk1.6.0_31) als 'Separate JRE' aus, klicken Sie unten auf "Anwenden" und führen Sie sie aus.

Dies setzt voraus, dass Sie einen Anlegesteg machen: Führen Sie ant mit Eclipse aus.

4
ydntn

Seltsam, weil dieser Thread schlägt vor:

Die Lösung bestand darin, das Paket jdk7-openjdk installieren.
Vielleicht sollte dies in die Liste der Abhängigkeiten aufgenommen werden (oder vielleicht für Steg und nicht für solr). 

Aber das hilft nicht viel bei Windows, wo die Binärdateien für openjdk7 nicht ohne weiteres verfügbar sind.
(In " OpenJDK-Verfügbarkeit für Windows OS " Kommentare, eckes erwähnt, dass einige openjdk - Binärdateien für Windows als Teil des Build b146 gefunden wurden Releases werden nicht mehr gepflegt)

Der Fehlerbericht gefüllt mit dem OP Jonas wird mit einem einfachen Verweis auf die Eclipse-Wiki-Seite "Jetty/Howto/Configure JSP" geschlossen. 

3
VonC

Ich habe das gleiche Problem. Beim Ausführen von where Java lautet die Ausgabe:

C:\Windows\System32\Java.exe

D:\Programme\Java\jdk1.7.0_25\bin\Java.exe

Der erste ist natürlich falsch. Mein Problem liegt also im PFAD. Ich kann dies korrigieren, indem ich entweder die Java.exe im Verzeichnis C:\Windows\System32\lösche, weil ich sicher bin, dass sie nicht verwendet wird, oder den zweiten Eintrag vor den ersten Eintrag stelle.

Wenn Sie also auf dieses Problem stoßen, überprüfen Sie bitte Ihren PATH auf die jdk. Ich hoffe, dass mein Problem und meine Lösung irgendwie hilfreich sind.

3
Daniel

Sie haben Planty-Lösungen, aber ich dachte, dass es eine bessere Lösung gibt, als die start.ini zu reparieren

Ich habe das gleiche Problem erlebt und dann ist mir klar, dass es vielleicht daran liegt, dass ich eine JDK7 für 64bit hatte, während ich eine JDK7 für 32 haben sollte.

Also habe ich mein Problem behoben, indem ich das JDK7 für 32Bit heruntergeladen und verwendet habe.

Auch müsstest du noch 

  • Verwenden Sie das JDK und nicht das JRE
  • Legen Sie Ihr Java_HOME fest

Ich laufe übrigens unter Windows ...

3
Charestm

Ich habe den PWC6345-Fehler erhalten, als jetty-runner 9.2.1 Standalone von Windows 7 cmd (oder Batchdatei) mit Oracle JDK 1.7.0_60 ausgeführt wurde, und keiner der anderen Vorschläge in diesem oder in anderen Foren hat funktioniert. Ich werde meine Problemumgehung hier lassen, falls es jemandem hilft ...

Nach der Installation des JDK wurden bei der Ausführung von 'where Java' zwei verschiedene Java.exe-Pfade angezeigt. Der erste Pfad befand sich im Windows-Systemordner und der zweite im JDK-Ordner (der Pfad wurde manuell hinzugefügt). Beide werden tatsächlich vom selben JDK-Installationsprogramm installiert. Die Java.exe im Systemordner hatte Vorrang und veranlasste das vollständige JDK, nicht erkannt zu werden.

Das Platzieren des JDK-Bin-Ordners (z. B. "C:\Programme\Java\jdk1.7.0_60\bin") auf dem Pfad before den anderen Systempfaden hat das Problem behoben.

2
amichair

Ich habe diesen Fehler erhalten, als ich das Kriegspaket auf unserem Server bereitstellte.

Mein Bereitstellungsbefehl lautet (angewendeter Web-Container):

Java  -jar jetty-runner.jar  --port 8020 xx.war

Ich schreibe diese Antwort, weil sie mich fast eines Tages verwirrt hat. Ich habe oben einige Methoden ausprobiert, aber gescheitert.

Endlich habe ich festgestellt, dass es nur jre auf meinen Servern gibt, aber keine volle Jdk.

$ls /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64
jre

Ich korrigiere es mit der Suche nach verfügbaren JDK und installiere eine.

$yum search Java | grep 'Java-'
$Sudo yum install Java-1.8.0-openjdk-devel.x86_64

(Beachten Sie den -devel)

0
Junjie

wenn Sie die Umgebungsvariable JRE_HOME setzen, deaktivieren oder löschen Sie sie und starten Sie den Server erneut.

0
Deep Shah

Zusätzlich zum Aktualisieren von Java_HOME (siehe oben) ..... Wenn dieser Fehler von der Befehlszeile aus angezeigt wird (z. B. Starten des Jetty-Servers über das DOS-Fenster), prüfen Sie, wo Windows die Java.exe findet:

wo Java

Wenn Windows mit einem Pfad zurückkehrt, der zu Ihrem jre führt, überprüfen Sie Ihren PFAD. Die Wahrscheinlichkeit ist, dass% PATH% einen Pfad enthält, der auf jre statt jdk verweist.

0
Robert

Ich habe diese Zeile zur 'Eclipse.ini'-Datei hinzugefügt, die sich im Eclipse-Ordner befindet.

-vm C:\Programme\Java\jdk1.8.0_131\bin\javaw.exe

und ich ändere auch den JRE-Pfad in Eclipse 

windows -> Einstellungen -> Java -> Installierte JREs 

und lieferte Pfad bis jdk 

C:\Programme\Java\jdk1.8.0_131

In Liferay 7: Dieser Fehler wurde behoben, indem die Laufzeitumgebung des Servers von jre zu jre mit jdk geändert wurde

0
user7224471