"Невозможно обновить приложение: не удалось скомпилировать сгенерированные JSP-файлы JSP." при попытке развернуть приложение GAE

Я прочитал перед публикацией
Я знаю, что есть довольно много вопросов по этому вопросу.
Я прочитал все, что смог найти, но ни одна из проблем и предложений там не помогла.

Моя среда
Windows 7 64bit GAE SDK 1.8.8 версия 1.7.0_45 JDK Eclipse Kepler 4.3.1 + плагин Google.

Материал, который я уже пробовал
Вот что я уже пробовал:
1) изменил системную переменную JAVA_HOME, указав C: \ Program Files \ Java \ jdk1.7.0_45
2) убедитесь, что системная переменная PATH содержит C: \ Program Files \ Java \ jdk1.7.0_45 \ bin
3) при открытии командного окна и запуске java -version и javac -version я получаю:

   C:\Users\epeleg>java -version
   java version "1.7.0_45"
   Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
   Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

   C:\Users\epeleg>javac -version
   javac 1.7.0_45

4) проверил, что все мои страницы JSP (их только 2) работают правильно при использовании на сервере разработки

5) модифицированный C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin\appcfg.cmd так что команда внутри него начинается с @%JAVA_HOME%\bin\java ... вместо java...

6) Я открыл панель маркеров (eclipse: window - show view - other... General -Markers) и исправил все проблемы с Java, которые там упоминались, какими бы банальными они ни казались.

Что показывают журналы Отчеты о процессе развертывания:

Preparing to deploy:
    Created staging directory at: 'C:\Users\epeleg\AppData\Local\Temp\appcfg1552018719531070310.tmp'
    Scanning for jsp files.
    Compiling jsp files.
com.google.appengine.tools.admin.JspCompilationException: Failed to compile the generated JSP java files.
ינו 13, 2014 3:20:30 PM org.apache.jasper.JspC processFile
INFO: Built File: \myFirstJSP.jsp
ינו 13, 2014 3:20:30 PM org.apache.jasper.JspC processFile
INFO: Built File: \mySecondJSP.jsp


Debugging information may be found in C:\Users\epeleg\AppData\Local\Temp\appengine-deploy4888568219008828635.log

Кажется, что "промежуточный каталог" в порядке (но, может быть, там отсутствуют библиотеки?!), А файл журнала содержит следующий текст:

Unable to update:

com.google.appengine.tools.admin.JspCompilationException: не удалось скомпилировать сгенерированные файлы JSP JSP. на com.google.appengine.tools.admin.Application.compileJavaFiles(Application.java:840) на com.google.appengine.tools.admin.Application.compileJsps(Application.java:801) на com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:615) в com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:418) в com.google.appengine.tools.admin.AppAdminImpl.updl App (,) в org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) в org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

Мои вопросы
1) ищу идеи относительно того, что еще я могу попробовать
2) Есть ли способ смоделировать компиляцию из командного окна прямо в промежуточной папке, чтобы я мог надеяться увидеть реальное полезное сообщение об ошибке?
3) ошибка говорит Failed to compile the generated JSP java files - где эти сгенерированные файлы должны быть?
4) Есть ли способ запустить appcfg.cmd прямо из командной строки (и с какими параметрами), чтобы я мог видеть его вывод (при условии, что плагин скрывает некоторые вещи от меня...).

Спасибо

1 ответ

Задача решена

Вот что я сделал, чтобы решить эту проблему, надеюсь, это поможет другим, у которых есть похожие проблемы.

Я решил попробовать загрузить файл из командной строки, а не использовать плагин для него. И вот что я получил:
[обратите внимание, что я добавил rem в команду @echo off, а также удалил @ с начала команды java в appcfg.cmd, чтобы все команды выводились на консоль]

C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>appcfg.cmd update "X:\path\to\my\project\war"
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem @echo off
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem Copyright 2009 Google Inc. All Rights Reserved.
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem Launches the AppCfg utility, which allows Google App Engine
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem developers to deploy their application to the cloud.
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>C:\Program Files\Java\jdk1.7.0_45\bin\java -Djava.home="C:\Program Files\Java\jdk1.7.0_45\jre" -Xmx1100m -cp "C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin\\..\lib\appengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg update "X:\path\to\my\project\war"
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.

Итак, я снова отредактировал appcfg.cmd и изменил последнюю строку, чтобы она выглядела так:

"%JAVA_HOME%\bin\java" -Djava.home="%JAVA_HOME%\jre" -Xmx1100m -cp "%~dp0\..\lib\appengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg %*

Попробуйте снова:

C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>appcfg.cmd update "X:\path\to\my\project\war"
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem @echo off
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem Copyright 2009 Google Inc. All Rights Reserved.
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem Launches the AppCfg utility, which allows Google App Engine
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>rem developers to deploy their application to the cloud.
C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin>"C:\Program Files\Java\jdk1.7.0_45\bin\java" -Djava.home="C:\Program Files\Java\jdk1.7.0_45\jre" -Xmx1100m -cp "C:\Program Files\GAE\appengine-java-sdk-1.8.8\bin\\..\lib\appengine-tools-api.jar" com.google.appengine.tools.admin.AppCfg update "X:\path\to\my\project\war"
Θ≡σ 13, 2014 5:17:12 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Reading application configuration data...
Θ≡σ 13, 2014 5:17:13 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFO: Successfully processed X:/path/to/my/project/war\WEB-INF/appengine-web.xml
Θ≡σ 13, 2014 5:17:13 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFO: Successfully processed X:/path/to/my/project/war\WEB-INF/web.xml
Θ≡σ 13, 2014 5:17:13 PM com.google.apphosting.utils.config.IndexesXmlReader readConfigXml
INFO: Successfully processed X:/path/to/my/project/war\WEB-INF\appengine-generated\datastore-indexes-auto.xml

Beginning interaction for module default...
Email: myemail@mydomain.com
Password for myemail@mydomain.com:
0% Created staging directory at: 'C:\Users\epeleg\AppData\Local\Temp\appcfg8197335956386755707.tmp'
5% Scanning for jsp files.
8% Compiling jsp files.
C:\Users\epeleg\AppData\Local\Temp\1389626267515-0\org\apache\jsp\myFirstJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:\Users\epeleg\AppData\Local\Temp\1389626267515-0\org\apache\jsp\mySecondJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:\Users\epeleg\AppData\Local\Temp\1389626267515-0\org\apache\jsp\myFirstJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
C:\Users\epeleg\AppData\Local\Temp\1389626267515-0\org\apache\jsp\mySecondJSP_jsp.java:6: error: package com.mycompany does not exist
import com.mycompany.*;
^
2 errors

Error Details:
Θ≡σ 13, 2014 5:17:48 PM org.apache.jasper.JspC processFile
INFO: Built File: \myFirstJSP.jsp
Θ≡σ 13, 2014 5:17:48 PM org.apache.jasper.JspC processFile
INFO: Built File: \mySecondJSP.jsp

com.google.appengine.tools.admin.JspCompilationException: Failed to compile the generated JSP java files.
Unable to update app: Failed to compile the generated JSP java files.
Please see the logs [C:\Users\epeleg\AppData\Local\Temp\appcfg6545644664045561868.log] for further information.

Поэтому я пошел в свой JSP, удалил некорректный атрибут импорта из тега страницы, попробовал еще раз, и на этот раз это сработало.

Теперь я не знаю, почему плагин не отображает наиболее важные строки в выводе appcfg.cmd, но для меня это похоже на какую-то ошибку.

Две строки
бежать <path-to-appengine-java-sdk>\bin\appcfg.cmd update <war-location> в командном окне он предоставит вам более подробный вывод, чем плагин, и, скорее всего, позволит вам решить проблему за считанные минуты.

Если это не поможет, вы можете выполнить все шаги, которые я упомянул в теле вопросов, похоже, они помогали другим людям в прошлом.

Другие вопросы по тегам