windows - 'PWC6345: Der er en fejl ved at påberåbe javac.' Fejl ved brug af Jetty WTP plugin til at implementere en JSP side på anløbsbro

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at installere en JSP-side på anløbsbro ved brug af Wetty-plugin til Eclipse. Men jeg får fejlen nedenfor. Det ser ud til, at Jetty ikke kan finde javac. Er der nogen indstillinger, jeg skal gøre for Jetty WTP-plugin i Eclipse eller hvordan reparerer jeg dette? [19]


JSP-siden fungerer fint, hvis jeg eksporterer mit projekt som en .war -fil til jettywebapps og derefter starter Jetty manuelt med java -jar start.jar. Men det virker ikke, hvis jeg implementerer brug af Wetty plugin til Eclipse som beskrevet.


Jeg har min JAVA\_HOME indstillet til C:Program Files (x86)Javajdk1.7.0\_01 og jeg bruger Jetty 8.0.4 på Windows 7.


Servlets fungerer fint med den nuværende opsætning. Eventuelle forslag til, hvordan du løser dette for JSP-sider?


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)

Bedste reference


Som Jan Bartel foreslog, fra anløbsbro: Sådan konfigureres JSP: [20]


ved at tilføje linjen nedenfor i start.ini -filen i Eclipse virker det fint.


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


Indtast billedbeskrivelse her

Andre referencer 1


Jeg er også sket for pludselig at få org.apache.jasper.JasperException: PWC6345 med min Eclipse installation og Jetty Maven Plugin (som jeg bruger til at starte Jetty fra indenfor Eclipse).


Årsagen var, at jeg opdaterede min JDK-installation kort før. Inside Eclipse forårsagede dette at ændre ' Installeret JRE ' for at pege på en almindelig JRE-installation i stedet for en komplet JDK-installation. Der kræves en JDK-installation til Jasper, som Jasper har brug for javac (som ikke leveres af JRE).


I mit tilfælde var løsningen at forsyne Eclipse med JDK-installationen. Det gør du ved at vælge Vindue -> Indstillinger -> Java -> Installerede JRE'er . Klik her Tilføj ... , og pek på din JDK-installation (i mit tilfælde JRE-hjem skal pege på C:Program Files (x86)Javajdk1.7.0\_17 ). Klik på Afslut . Derefter tilbage i oversigten Installeret JRE , fjern den gamle JRE-reference og nyligt tilføjet JDK-installation .

Andre referencer 2


Jeg fik fejlen PWC6345, når jeg kørte en webapp med Run-Jetty-Run plugin.


Løsningen var at ændre indstillinger for udførelsesmiljøer i indstillinger.
Da jeg bruger Java 7, havde jeg brug for at ændre indstillingen for JavaSE-1.7.
Sandsynligvis andre udførelsesmiljøer opfører sig på samme måde.


Vindue -> Indstillinger -> Java -> Installeret JREs -> Udførelsesmiljøer


Vælg JavaSE-1.7 til venstre -> vælg * jdk * 1.7.x\_xx på højre side

Andre referencer 3


Ok, løst dette efter en masse søgning.


Download nogen jdk og punkt JAVA\_HOME til denne jdk.
Inde i denne jdk mappe finder du ./bin og ./jre/bin
Kopier javacet fra ./bin og indsæt det i ./jre/bin [[husk kopi ikke skåret]]


Nu i formørkelse Kør-> Eksternt værktøj-> Eksternt-Værktøj-Konfigurationer , vælg build.xml for for dit projekt i venstre rude og klik på fanen JRE i højre rude.
Klik på installerede JRE'er og tilføj jdk i det foregående trin.
Når du er færdig, skal du vælge denne nye JRE (jdk1.6.0\_31) som 'Separat JRE', klik på Apply nederst og kør.


Dette forudsætter at du laver en anløbsbro: Kør ved hjælp af myr på formørkelse.

Andre referencer 4


Mærkeligt fordi denne tråd antyder: [21]



  Løsningen var at installere pakken jdk7-openjdk .

  Måske skal dette tilføjes til listen over afhængigheder (eller måske til anløbsbro, og ikke solr selv)?



Men det hjælper ikke meget med Windows, hvor den binære til openjdk7 ikke er let tilgængelig.

(I 'OpenJDK tilgængelighed til Windows OS' kommentarer nævner eckes at have fundet nogle openjdk-binære filer til Windows som en del af Build b146. Men udgivelserne er ikke længere vedligeholdt) [[[24] [25]


Fejlrapporten udfyldt af OP Jonas er lukket med en simpel henvisning til Eclipse wiki-siden 'Jetty/Howto/Configure JSP'. [26] [28]

Andre referencer 5


Du har planty løsninger fyre, men jeg troede, at det eksisterer en løsning bedre end at lave start.ini


Jeg levede det samme problem, og så indser jeg, at det kan skyldes, at jeg havde en JDK7 til 64bit, mens jeg skulle have en JDK7 til 32.


Så jeg løste mit problem ved at downloade og bruge JDK7 til 32Bit.


Også, du ville stadig brug for



  • Brug JDK og ikke JRE

  • Indstil din JAVA\_HOME



Jeg kører på Windows forresten ...

Andre referencer 6


Jeg har det samme problem. Når jeg kører where java, er outputen:



  C: \ Windows \ System32 \ java.exe

  
  D: \ Programmer \ Java \ jdk1.7.0\_25 \ bin \ java.exe



Selvfølgelig er den første en forkert. Så mit problem ligger i stien. Jeg kan rette op på dette ved enten at fjerne java.exe i mappen C: \ Windows \ System32 \ fordi jeg er sikker på at den er ubrugelig eller sætte den anden post foran den første.


Så når du støder på dette problem, skal du kontrollere din PATH for jdk. Jeg håber at mit problem og min løsning er til hjælp på en eller anden måde.

Andre referencer 7


Jeg fik PWC6345-fejlen, når jeg kørte jetty-runner 9.2.1 standalone fra Windows 7 cmd (eller batch-fil) med Oracle JDK 1.7.0\_60, og ingen af ​​de andre forslag i dette eller andre fora fungerede. Jeg vil efterlade min løsning her, hvis det hjælper nogen ...


Efter at have installeret JDK'en, hvor 'java' viste to forskellige java.exe-stier, var den første i Windows-systemmappen og den anden i JDK-mappen (som jeg tilføjede til stien manuelt). Begge disse installeres faktisk af samme JDK-installatør. Java.exe i systemmappen havde forrang og forårsager, at den fulde JDK skulle gå uopdaget.


Placering af JDK bin-mappen (for eksempel 'C: \ Program Files \ java \ jdk1.7.0\_60 \ bin') på stien før fastgjorde de andre systemstier problemet.

Andre referencer 8


Ud over at opdatere JAVA\_HOME (se ovenfor) ...
Hvis du støder på denne fejl fra kommandolinjen (f.eks. Start Jetty server fra dos vindue), skal du kontrollere, hvor Windows finder java.exe:



  hvor java



Hvis vinduer kommer tilbage med en sti, der viser til din jre, så tjek din PATH. Chancerne er, at\% PATH\% indeholder en sti, der peger på jre i stedet for jdk.

Andre referencer 9


Hvis du angiver miljøvariabel JRE\_HOME, skal du afbryde eller slette den
og start server igen.

Andre referencer 10


I livseray 7: Jeg fik denne fejl ved at ændre serverens runtime-miljø fra jre til jre med jdk

Andre referencer 11


Jeg fik denne fejl, når du distribuerer krigspakke til vores server.


Min implementeringskommando er (anvendt webbeholder du kan finde):


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


Jeg skriver dette svar, fordi det forvekslede mig næsten en dag. Jeg prøvede nogle metoder ovenfor men mislykkedes.


Endelig fandt jeg, at der kun er jre på mine servere, men ikke fuld jdk.


$ls /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7\_3.x86\_64
jre


Jeg løser det med at søge ledig jdk og installere en.


$yum search java | grep 'java-'
$sudo yum install java-1.8.0-openjdk-devel.x86\_64


(Bemærk -devel)

Andre referencer 12


Jeg tilføjede denne linje til 'eclipse.ini' -filen, som er til stede i eclipse-mappen.


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


og jeg ændrer også JRE-banen i formørkelse


windows -> præferencer -> java -> installerede JRE'er


og forudsat stien op til jdk


C: \ Programmer \ Java \ jdk1.8.0\_131

Andre referencer 13


Jeg brugte god tid på dette problem, men det viste sig at være meget simpelt. Alt du skal gøre er:

vælg JDK i stedet for JRE, mens du konfigurerer serverens runtime!


Det fungerede som en mester, jeg havde dette problem med glassFish 4.0