"PWC6345: существует ошибка в вызове javac."ошибка при использовании плагина Jetty WTP для развертывания страницы JSP на причале

Я пытаюсь развернуть JSP-страницу на причале, используя Jetty WTP плагин для Eclipse. Но я получаю ошибку ниже. Похоже, что Jetty не может найти javac. Есть ли какие-либо настройки, которые я должен сделать для плагина Jetty WTP в Eclipse или как это исправить?

страница JSP отлично работает, если я экспортирую свой проект как .war-файл jettywebapps а затем запустить причал вручную с помощью java -jar start.jar. Но это не работает, если я развертываю с помощью плагина Jetty WTP для Eclipse как описанный.

у меня JAVA_HOME значение C:Program Files (x86)Javajdk1.7.0_01 и я использую Jetty 8.0.4 в Windows 7.

сервлеты отлично работают с текущей настройкой. Любые предложения о том, как решить эту проблему для страниц 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.run(SelectChannelEndPoint.java:44)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:533)
    at java.lang.Thread.run(Unknown Source)

14 ответов


Как предположил Ян Бартель, из Jetty: как настроить JSP:

добавить строку ниже в start.ini-файл в Eclipse, работает нормально.

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

enter image description here


мне тоже случилось внезапно получить org.apache.jasper.JasperException: PWC6345 с моей установкой Eclipse и Jetty Maven Плагин (который я использую для запуска причала из Eclipse).

причина в том, что я обновил свою установку JDK незадолго до этого. Внутри Eclipse это вызвало изменение " установлен JRE " указать на простую установку JRE вместо полноценной установки JDK. Установка JDK необходима для Jasper, так как Jasper нуждается javac (который не предусмотрено, что JRE).

в моем случае решением было предоставить Eclipse с установкой JDK. Для этого выберите Окно - > Настройки - > Java - > Установленные JREs. Здесь нажмите добавить..., затем укажите на вашу установку JDK (в моем случае, JRE home следует указать C:\Program Files (x86)\Java\jdk1.7.0_17). Нажмите готово. Тогда обратно в Установлен JREs обзор, удалить старая ссылка JRE и выберите недавно добавленную установку JDK.


Я получил ошибку PWC6345 при запуске webapp с плагином Run-Jetty-Run.

исправление состояло в изменении параметров среды выполнения в настройках. Поскольку я использую java 7, мне нужно было изменить настройку для JavaSE-1.7. Вероятно, другие среды выполнения будут вести себя аналогичным образом.

окно - > настройки - > Java - > установленные JREs - > среды выполнения

выберите JavaSE-1.7 слева - > выберите *пакета JDK*1.7.x_xx справа стороны


хорошо, решил это после многих поисков вокруг.

загрузите любой jdk и укажите JAVA_HOME на этот jdk. Внутри этой папки jdk вы найдете ./бункер и. /JRE и/Бин Скопируйте javac из ./ bin и вставьте его ./jre / bin [запомнить копировать не вырезать]

теперь в Eclipse, Run - >External-Tools->External-Tools-Конфигурации выберите построить.xml для вашего проекта в левой панели и нажмите на вкладку JRE в правой панели. Нажмите на установленные JREs и добавьте jdk на предыдущем шаге. После этого выберите этот новый JRE (jdk1.6.0_31)в качестве "отдельной JRE" нажмите "Применить" внизу и запустите.

Это предполагает, что вы делаете причал:запуск с помощью ant на eclipse.


странно, потому что этой теме предлагает:

было принято решение установите пакет jdk7-openjdk.
Возможно, это следует добавить в список зависимостей (или, может быть, для jetty, а не для самого solr)?

но это не очень помогает в Windows, где двоичный файл для openjdk7 недоступен.
(В"доступность OpenJDK для ОС Windows" комментарии eckes упоминает, найдя некоторые двоичные файлы openjdk для Windows в рамках построить b146. Однако указанные релизы больше не поддерживаются)

на сообщить об ошибке заполнить ОП Джонас закрывается простой ссылкой на страница Eclipse wiki "причал / Howto / настройка JSP".


У вас есть planty solutions ребята, но я думал, что это решение лучше, чем исправить начало.ini

Я жил той же проблемой, а затем я понимаю, что это может быть потому, что у меня был JDK7 для 64bit, а у меня должен быть JDK7 для 32.

поэтому я исправил свою проблему, загрузив и используя JDK7 для 32Bit.

кроме того, вам все равно нужно

  • используйте JDK, а не JRE
  • установить Переменной JAVA_HOME

кстати, я работаю на Windows ...


У меня такая же проблема. Когда я бегу where java вывод:

C:\Windows\System32\java.exe

D:\Program файлы\Java\jdk1.7.0_25\bin\java.exe

конечно, первый неверен. Так что моя проблема лежит на пути. Я могу исправить это, либо удалив java.exe в каталоге C:\Windows\System32\ потому что я уверен, что это бесполезно, или положить вторую запись перед первой.

Так Когда столкнувшись с этой проблемой, пожалуйста, проверьте свой путь для jdk. Я надеюсь, что моя проблема и мое решение в некотором роде полезны.


Я получил ошибку PWC6345 при запуске jetty-runner 9.2.1 standalone из Windows 7 cmd (или пакетного файла) с Oracle JDK 1.7.0_60, и ни одно из других предложений на этом или других форумах не работало. Я оставлю свой обходной путь здесь, на случай, если это кому-то поможет...

после установки JDK, запуск "где java" показал две разные java.exe-пути, первый из которых находится в системной папке Windows, а второй-в папке JDK (который я добавил в путь вручную). Оба из них фактически установлены тем же установщиком JDK. Ява.exe в системной папке имел приоритет и заставлял полный JDK оставаться незамеченным.

размещение папки JDK bin (например, "C:\Program файлы\java\jdk1.7.0_60\bin") по пути до другие системные пути исправили проблему.


в дополнение к обновлению JAVA_HOME (см. выше)... Если вы столкнулись с этой ошибкой из командной строки (например, запуск сервера Jetty из окна dos), проверьте, где windows находит java.exe:

где java

Если windows возвращается с путем, показывающим ваш jre, затем проверьте свой путь. Скорее всего, %PATH% содержит путь, указывающий на jre вместо jdk.


Если вы установите переменную окружения JRE_HOME, пожалуйста, снимите или удалите его и снова запустите сервер .


в liferay 7: я исправил эту ошибку, изменив среду выполнения сервера с jre на jre с помощью jdk


Я получил эту ошибку при развертывании пакета war на нашем сервере.

моя команда развертывания (примененный веб-контейнер, который вы можете найти):

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

Я пишу этот ответ, потому что он смутил меня почти один день. Я попробовал некоторые методы выше, но не удалось.

наконец, я обнаружил, что на моих серверах Есть только 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)


Я добавил эту строку в ' eclipse.ini ' файл, который присутствует внутри папки eclipse.

-vm C:\Program файлы\Java\jdk1.8.0_131\bin\javaw.exe

и я также изменяю путь JRE в eclipse

windows - > настройки - > java - > установленные JREs

и при условии путь до jdk

C:\Program файлы\Java\jdk1.8.0_131


Я потратил много времени на этот вопрос, но он оказался очень простым. Все, что вам нужно сделать, это:
выберите JDK вместо JRE при настройке среды выполнения сервера!

Он работал как чемпион, у меня была эта проблема с GlassFish 4.0