web-dev-qa-db-fra.com

"PWC6345: Il y a une erreur lors de l'appel de javac." erreur lors de l'utilisation du plugin Jetty WTP pour déployer une page JSP sur Jetty

J'essaie de déployer une page JSP sur Jetty, en utilisant le plugin Jetty WTP pour Eclipse. Mais je reçois l'erreur ci-dessous. Il semble que Jetty ne trouve pas javac. Dois-je effectuer certains réglages pour le plug-in Jetty WTP dans Eclipse ou comment y remédier?

La page JSP fonctionne correctement si j'exporte mon projet sous la forme d'un fichier .war- vers jetty\webapps, puis que je lance Jetty manuellement à l'aide de Java -jar start.jar. Mais cela ne fonctionne pas si je déploie à l'aide du plug-in Jetty WTP pour Eclipse comme décrit.

Mon Java_HOME est défini sur C:\Program Files (x86)\Java\jdk1.7.0_01 et j'utilise Jetty 8.0.4 sur Windows 7.

Servlets fonctionne bien avec la configuration actuelle. Des suggestions sur la façon de résoudre ceci pour les pages 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)
37
Jonas

Comme Jan Bartel l’a suggéré, dans Jetty: Comment configurer JSP :

en ajoutant la ligne ci-dessous dans le fichier start.ini- dans Eclipse, cela fonctionne correctement.

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

enter image description here

41
Jonas

Il m'est également arrivé d'avoir le org.Apache.jasper.JasperException: PWC6345 avec mon installation Eclipse et le plugin Jetty Maven (que j'utilise pour démarrer Jetty à partir d'Eclipse).

La raison en est que j'ai mis à jour mon installation JDK peu de temps auparavant. Dans Eclipse, cela a entraîné la modification de "Installed JRE" afin qu'il pointe vers une installation JRE simple au lieu d'une installation à part entière du JDK. Une installation JDK est nécessaire pour Jasper, car Jasper a besoin de javac (non fournie par JRE).

Dans mon cas, la solution consistait à fournir à Eclipse l’installation de JDK. Pour ce faire, sélectionnez Fenêtre -> Préférences -> Java -> JRE installés. Ici, cliquez sur Ajouter ..., puis pointez sur votre installation JDK (dans mon cas, JRE home devrait pointer sur C:\Program Files (x86)\Java\jdk1.7.0_17). Cliquez sur Terminer. Ensuite, retour dans la vue d'ensemble JRE installés _, supprime l'ancienne référence JRE et sélectionnez la nouvelle installation de JDK .

25
Abdull

J'ai eu l'erreur PWC6345 lors de l'exécution d'une application Web avec le plugin Run-Jetty-Run.

Le correctif consistait à modifier les paramètres des environnements d'exécution dans Préférences . Puisque j'utilise Java 7, je devais modifier le paramètre de JavaSE-1.7 . D'autres environnements d'exécution se comporteront probablement de la même manière.

Fenêtre -> Préférences -> Java -> JRE installés -> Environnements d'exécution

Sélectionnez JavaSE-1.7 à gauche -> choisissez le fichier * jdk * 1.7.x_xx à droite

5
Peter Lamberg

Ok, résolu après de nombreuses recherches.

Téléchargez n'importe quel jdk et pointez Java_HOME sur ce jdk . Dans ce dossier, vous trouverez ./bin et ./jre/bin Copiez le javac à partir de ./bin et collez-le dans ./jre/bin [Remember copie non coupée]

Maintenant dans Eclipse, Exécuter-> Outils-Externes-> Configurations-Outils-Externes , sélectionnez le fichier build.xml de votre projet dans le volet de gauche, puis cliquez sur l'onglet JRE dans le volet de droite . Cliquez sur sur les JRE installés et ajoutez le jdk à l'étape précédente . Une fois terminé, sélectionnez ce nouveau JRE (jdk1.6.0_31) en tant que «JRE séparé», cliquez sur Appliquer en bas et lancez.

Cela suppose que vous faites une jetée: exécutez ant avec Eclipse.

4
ydntn

Étrange parce que ce fil suggère:

La solution consistait à installer le paquet jdk7-openjdk.
Cela devrait peut-être être ajouté à la liste des dépendances (ou peut-être pour la jetée, et non pas pour lui-même)? 

Mais cela n’aide pas beaucoup sur Windows, où le binaire pour openjdk7 n’est pas facilement disponible.
(Dans " Disponibilité OpenJDK pour Windows " commentaires, eckes mentions ayant trouvé des binaires openjdk pour Windows , dans le cadre de Build b146 . Cependant, les versions ne sont plus maintenues)

Le rapport de bogue rempli par le OP Jonas est fermé par une simple référence à la page wiki Eclipse "Jetty/Howto/Configure JSP"

3
VonC

J'ai le même problème. Lorsque je lance where Java, le résultat est le suivant:

C:\Windows\System32\Java.exe

D:\Program Files\Java\jdk1.7.0_25\bin\Java.exe

Bien sûr, le premier est incorrect. Donc, mon problème réside dans le PATH. Je peux rectifier cela en supprimant le fichier Java.exe du répertoire C:\Windows\System32\car je suis sûr que c'est inutile ou en plaçant la deuxième entrée devant la première.

Donc, quand vous rencontrez ce problème, veuillez vérifier votre PATH pour le jdk. J'espère que mon problème et ma solution sont utiles d'une certaine manière.

3
Daniel

Vous avez les solutions planty les gars, mais je pensais qu'il existe une solution mieux que de réparer le start.ini

J'ai vécu le même problème et je me suis rendu compte que c'était peut-être parce que j'avais un JDK7 pour 64 bits alors que je devrais avoir un JDK7 pour 32.

J'ai donc résolu mon problème en téléchargeant et en utilisant le JDK7 pour 32 bits.

En outre, vous auriez encore besoin de 

  • Utilisez le JDK et non le JRE
  • Définissez votre Java_HOME

Je cours sous Windows en passant ...

3
Charestm

J'ai eu l'erreur PWC6345 lors de l'exécution de jetty-runner 9.2.1 en mode autonome à partir de Windows 7 cmd (ou fichier de traitement par lots) avec Oracle JDK 1.7.0_60 et aucune des autres suggestions de ce forum ou d'autres n'a fonctionné. Je vais laisser ma solution ici, au cas où cela aiderait quelqu'un ...

Après l’installation du JDK, l’exécution de 'où Java' a montré deux chemins Java.exe différents, le premier étant dans le dossier système Windows et le second dans le dossier JDK (qui est celui que j’ai ajouté manuellement au chemin). Ces deux éléments sont en réalité installés par le même programme d'installation JDK. Le fichier Java.exe du dossier système était prioritaire et le JDK complet n’était plus détecté.

Placer le dossier bin du JDK (par exemple, "C:\Program Files\Java\jdk1.7.0_60\bin") sur le chemin avant les autres chemins système a résolu le problème.

2
amichair

J'ai eu cette erreur quand déployer le paquet de guerre sur notre serveur.

Ma commande deploy est (vous pouvez trouver un conteneur Web appliqué):

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

J'écris cette réponse parce qu'elle m'a confondu presque un jour. J'ai essayé quelques méthodes ci-dessus mais j'ai échoué.

Finalement, j'ai trouvé qu'il n'y avait que jre sur mes serveurs mais pas de jdk complet.

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

Je le répare avec la recherche de jdk disponible et en installe un.

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

(Remarquez le -devel)

0
Junjie

si vous définissez la variable d'environnement JRE_HOME, veuillez la désélectionner ou la supprimer et redémarrer le serveur.

0
Deep Shah

Outre la mise à jour de Java_HOME (voir ci-dessus), si vous rencontrez cette erreur à partir de la ligne de commande (par exemple, en démarrant le serveur Jetty à partir de la fenêtre DOS), vérifiez où Windows recherche le fichier Java.exe:

où Java

Si windows revient avec un chemin indiquant votre jre, alors vérifiez votre PATH. Les chances sont que le% PATH% contient un chemin qui pointe vers le jre au lieu de jdk.

0
Robert

J'ai ajouté cette ligne au fichier 'Eclipse.ini' qui est présent dans le dossier Eclipse.

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

et je change aussi le chemin JRE dans Eclipse 

windows -> préférences -> Java -> JRE installés 

et fourni le chemin jusqu'à jdk 

C:\Program Files\Java\jdk1.8.0_131

0

Dans liferay 7: cette erreur a été corrigée en modifiant l'environnement d'exécution du serveur de jre en jre avec jdk

0
user7224471