Как использовать Play Framework с Google App Engine с локально установленной Java 7? - PullRequest
5 голосов
/ 30 августа 2011

Я только что скачал последнюю версию Play Framework (1.2.3) и использую ее с последним плагином Scala (0.9.1) и модулем Google App Engine (1.4).

Приложение по умолчанию работает нормально локально (на localhost: 9000, порт по умолчанию).Я также успешно опубликовал приложение по умолчанию для GAE, используя play gae:deploy.

Однако, когда я захожу на удаленный URL GAE, я получаю стандартное сообщение об ошибке:

Error: Server Error.
The server encountered an error and could not complete your request.

If the problem persists, please report your problem and mention this error message and the query that caused it.

Вот полная трассировка стека в журналах GAE: https://gist.github.com/1181257

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

java.lang.UnsupportedClassVersionError: helpers/CheatSheetHelper$1 : Unsupported major.minor version 51.0

51.0 - это (я думаю) версия класса, которую генерирует компилятор Java 7.Теперь мой вопрос прост:

Как заставить Play Framework и его плагин Scala компилировать классы для публикации GAE с использованием параметров -target 1.6 и -source 1.6, чтобы выходные классы былиСовместимость с 1.6, вместо значений по умолчанию, которые заставляют локальную установку Java 7 генерировать 1.7 выходных классов?

Спасибо.

[править] Что касается NPE, кажется, что это не такдобавлено в Play 1.2.1 и версию плагина Scala 0.9: Play Framework со Scala и GAE - опять же, это просто побочная проблема, основная проблема (заставить работать Java 7) остается.Я создал билет для этого: http://play.lighthouseapp.com/projects/74274-play-scala/tickets/45-nullpointerexception-on-google-app-engine

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

Java 7 полностью поддерживается для Play 1.2.4 RC3 - попробуйте и посмотрите, решит ли он ваши проблемы.

2 голосов
/ 30 августа 2011

Чтобы заставить Java 7 работать в настоящее время, вы должны использовать следующую конфигурацию в вашем файле application.confirm

java.source=1.6

Подробнее см. Здесь - VerifyError; Ожидается фрейм карты стека в методах контроллеров. Безопасный $ Security.authentify

1 голос
/ 14 декабря 2011

Я просто столкнулся с той же проблемой. Я использую Java 7 и не хочу, чтобы все мои другие Java-приложения снова запускались на 6. Итак, я сделал дамп копии JDK 6 в каталог, а затем сделал простой сценарий bash для установки правильных переменных среды и вызова воспроизведения. Затем я обозначил этот сценарий как «play» на моем пути. Теперь, когда игра вызывается, в ней запускается среда JDK 6 без необходимости изменять все остальное на компьютере.

... менее чем идеально, но работает достаточно хорошо и содержит все в чистоте.

...