"PWC6345: при вызове javac произошла ошибка". ошибка при использовании плагина Jetty WTP для развертывания JSP-страницы на Jetty
Я пытаюсь развернуть 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 ответов
Как предположил Ян Бартель, от Jetty: Как настроить JSP:
добавив строку ниже в start.ini
-файл в Eclipse, он отлично работает.
-Dorg.apache.jasper.compiler.disablejsr199=true
Я тоже случайно получил org.apache.jasper.JasperException: PWC6345
с моей установкой Eclipse и плагином Jetty Maven (который я использую для запуска Jetty из Eclipse).
Причина была в том, что я обновил свою установку JDK незадолго до этого. В Eclipse это привело к изменению " Установленной JRE ", чтобы она указывала на простую установку JRE вместо полноценной установки JDK. Для Jasper требуется установка JDK, так как Jasper javac
(который не предоставляется JRE).
В моем случае решением было предоставить Eclipse установку JDK. Для этого выберите Окно -> Настройки -> Java -> Установленные JRE. Здесь нажмите Add..., затем укажите вашу установку JDK (в моем случае JRE home должна указывать на C:\Program Files (x86)\Java\jdk1.7.0_17
). Нажмите Готово. Затем вернитесь в обзор Установленные JRE, удалите старую ссылку на JRE и выберите только что добавленную установку JDK.
Я получил ошибку PWC6345 при запуске веб-приложения с плагином Run-Jetty-Run.
Исправление состояло в том, чтобы изменить настройки сред выполнения в настройках. Поскольку я использую Java 7, мне нужно было изменить настройки для JavaSE-1.7. Вероятно, другие среды выполнения будут вести себя аналогично.
Окно -> Настройки -> Java -> Установленные JRE -> Среды исполнения
Выберите JavaSE-1.7 слева -> выберите *jdk* 1.7.x_xx справа
Хорошо, решил это после долгих поисков.
Загрузите любой 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", нажмите "Применить" внизу и запустите.
Это предполагает, что вы делаете причал: бегите, используя муравей на затмении.
Странно, потому что эта тема предлагает:
Решением было установить пакет jdk7-openjdk.
Возможно, это следует добавить в список зависимостей (или, может быть, для причала, а не для самого решения)?
Но это мало помогает в Windows, где двоичный файл для openjdk7 не так легко доступен.
(В комментариях " Доступность OpenJDK для ОС Windows" eckes упоминает, что нашел часть двоичных файлов openjdk для Windows, как часть Build b146. Однако указанные выпуски больше не поддерживаются)
Отчет об ошибке, заполненный Jonas, закрыт простой ссылкой на http://wiki.eclipse.org/Jetty/Howto/Configure_JSP.
У вас есть сложные решения, ребята, но я подумал, что это решение лучше, чем исправить start.ini
Я жил той же проблемой, и затем я понимаю, что это может быть потому, что у меня был JDK7 для 64-битных, в то время как у меня должен быть JDK7 для 32-х.
Поэтому я исправил свою проблему, загрузив и использовав JDK7 для 32-битной версии.
Кроме того, вам все равно нужно
- Используйте JDK, а не JRE
- Установите свой JAVA_HOME
Я работаю на Windows, кстати...
У меня та же проблема. Когда я бегу 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. Я надеюсь, что моя проблема и мое решение в некотором роде помогут.
Я получил ошибку 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") на пути до того, как другие системные пути устранили проблему.
Я добавил эту строку в файл 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
В liferay 7: я исправил эту ошибку, изменив среду выполнения сервера с jre на jre с помощью jdk
Если вы установите переменную среды JRE_HOME
Пожалуйста, удалите или удалите его и запустите сервер снова.
В дополнение к обновлению JAVA_HOME (см. Выше)... Если вы столкнулись с этой ошибкой из командной строки (например, запуск сервера Jetty из окна DOS), проверьте, где Windows находит java.exe:
где ява
Если Windows возвращается с указанием пути к вашей JRE, то проверьте ваш путь. Скорее всего,%PATH% содержит путь, указывающий на jre вместо jdk.
Я получил эту ошибку при развертывании военного пакета на нашем сервере.
Моя команда развертывания (примененный веб-контейнер вы можете найти):
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
)
Я потратил много времени на эту проблему, но все оказалось очень просто. Все, что вам нужно сделать, это:
выберите JDK вместо JRE при настройке времени выполнения сервера!
Это работало как чемпион, у меня была эта проблема со GlassFish 4.0