Метод undefined для объекта в java не может быть скомпилирован и развернут

Я получаю эту ошибку из-за следующего:

public class Application extends Controller {

    public static class Result {
        public Result(String contents, Status status) {
            this.contents = contents;
            this.status = status;
        }

        public final String contents;
        public final Status status;

        // "status":{"url":"https://mtgox.com/api/0/data/ticker.php","content_type":"application/json","http_code":200

        public static class Status {
            public final String url;
            public final String content_type;
            public final int http_code;

            public Status(String url, String content_type, int http_code) {
                this.url = url;
                this.content_type = content_type;
                this.http_code = http_code;
            }
        }
    }

    public static void index() {
        render();
    }

    public static void options(String url, final String callback) {
        response().setHeader("Access-Control-Allow-Origin", "*");
        response().setHeader("Allow", "*");
        response().setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
        response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");

        return ok();
    }
}

Однако URL-адрес и обратный вызов передаются функциям. Я не уверен, почему получаю эту ошибку:

 The file /app/controllers/Application.java could not be compiled. Error 
 raised is : The method response() is undefined for the type Application

Это файл контроллера, и я не знаю, как исправить эту проблему с синтаксисом.

Я не уверен, что вас смущает. Нет никакого метода ответа, который определен внутри класса Application (если класс Controller не имеет их). Так что он будет жаловаться, что нет способа ответа. Это полный объем вашего кода?

Steven 10.12.2018 21:44

он начинается с контроллеров пакетов пакетов; import com.google.gson.GsonBuilder; import org.apache.commons.lang.StringUtils; import org.yaml.snakeyaml.util.UriEncoder; импортировать play.libs.F; импортировать play.libs.WS; import play.mvc. *;

Mary A 10.12.2018 21:49

Если он находится внутри вашего класса контроллера, объявлен ли он общедоступным, защищенным, частным?

Steven 10.12.2018 21:49

Это файл на github, который я нашел, пытаясь повторно развернуть то же приложение на heroku.

Mary A 10.12.2018 21:49

Это код, который вы откуда-то скопировали и вставили? Можете ли вы дать ссылку на то, где вы это нашли?

Steven 10.12.2018 21:50

И вы уверены, что правильно указали и импортировали все необходимые зависимости в свой проект?

Steven 10.12.2018 21:52

Я смотрю на это. Единственная зависимость, указанная в файле dependencies.yml, который я вижу, - это play, который я использовал в качестве пакета сборки. Но мне, вероятно, чего-то не хватает, если я не могу это развернуть.

Mary A 10.12.2018 21:55

Отсутствие зависимости / библиотеки, скорее всего, является виновником вашей ошибки. Убедитесь, что ваши операторы импорта такие же, как указано на странице github.

Steven 10.12.2018 21:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
9
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Либо вам нужно определить метод response () внутри файла класса приложения, либо вам необходимо определить их в своем классе контроллера, который наследуется вашим классом приложения. Вы получаете эту ошибку, потому что она нигде не может найти какое-либо объявление метода с именем response ().

И вы должны убедиться, что все внешние библиотеки / зависимости импортируются правильно.

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