"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
мне тоже случилось внезапно получить 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
, пожалуйста, снимите или удалите его
и снова запустите сервер .
Я получил эту ошибку при развертывании пакета 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