«PWC6345: при вызове javac произошла ошибка».ошибка при использовании плагина Jetty WTP для развертывания страницы JSP на Jetty - PullRequest
37 голосов
/ 02 февраля 2012

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

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

У меня JAVA_HOME установлено значение C:\Program Files (x86)\Java\jdk1.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$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)

Ответы [ 14 ]

41 голосов
/ 03 февраля 2012

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

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

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

enter image description here

25 голосов
/ 16 марта 2013

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

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

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

5 голосов
/ 22 февраля 2013

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

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

Окно -> Настройки -> Java -> Установленные JRE -> Среды выполнения

Выберите JavaSE-1.7 слева -> выберите * jdk * 1.7.x_xx справа

4 голосов
/ 19 августа 2012

Хорошо, решил после долгих поисков.

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

Теперь в eclipse, Выполнить-> Внешние-Инструменты-> Внешние-Инструменты-Конфигурации , выберите build.xml для вашего проекта на левой панели и нажмите на вкладку JRE на правой панели. , Нажмите на установленные JRE и добавьте JDK на предыдущем шаге. После этого выберите этот новый JRE (jdk1.6.0_31) в качестве «отдельного JRE», нажмите «Применить» внизу и запустите.

Предполагается, что вы выполняете причал: бегите, используя муравей на затмении.

3 голосов
/ 22 января 2014

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

C: \ Windows \ System32 \ java.exe

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

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

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

3 голосов
/ 14 сентября 2013

Ребята, у вас есть сложные решения, но я подумал, что это решение лучше, чем исправление start.ini

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

Итак, я исправил свою проблему, загрузив и использовав JDK7 для 32-битной версии.

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

  • Используйте JDK, а не JRE
  • Установите свой JAVA_HOME

Кстати, я работаю в Windows ...

3 голосов
/ 02 февраля 2012

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

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

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

Отчет об ошибке , заполненный OP Jonas , закрыт простой ссылкой на вики-страницу Eclipse "Jetty / Howto / Configure JSP" .

2 голосов
/ 06 июля 2014

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

После установки JDK, запуск 'where java' показал два разных пути java.exe, первый в системной папке Windows, ивторой в папке JDK (который я добавил к пути вручную).Оба они фактически установлены одним и тем же установщиком JDK.Файл java.exe в системной папке имел приоритет и приводил к тому, что полный JDK оставался незамеченным.

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

0 голосов
/ 17 ноября 2017

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

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

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

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

и предоставленный путь до jdk

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

0 голосов
/ 02 мая 2017

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

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

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)

...