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

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

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

У меня установлен JAVA_HOME JAVA_HOME, и я использую 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)

Ответ 1

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

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

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

enter image description here

Ответ 2

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

Причина в том, что я недавно обновил мою установку JDK. Внутри Eclipse это привело к изменению "Установленной 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.

Ответ 3

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

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

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

Выберите JavaSE-1.7 слева → выберите правую сторону * jdk * 1.7.x_xx

Ответ 4

Хорошо, решил это после многого поиска.

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

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

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

Ответ 5

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

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

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

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

Ответ 6

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

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

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

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

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

Я запускаю Windows, кстати...

Ответ 7

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

C:\Windows\System32\java.exe

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

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

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

Ответ 8

Я получил ошибку 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.

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

Ответ 9

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

где java

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

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

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)

Ответ 13

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

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

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

окна → настройки → java → Установленные JRE

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

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

Ответ 14

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

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