Android Studio не удалось найти или загрузить основной класс файла "Скретч" - программирование
Подтвердить что ты не робот

Android Studio не удалось найти или загрузить основной класс файла "Скретч"

Обновление: ниже проблема остается до Android Studio 3.4.2.


Я использую Android Studio 3.3 и создал файл с scratch (File > new > Scratch File > Java). Среда IDE создала scratch.java в ~/.AndroidStudio3.3/config/scratches:

class Scratch {
    public static void main(String[] args) {

    }
}

Но когда я запускаю этот файл (нажав зеленую кнопку рядом с именем класса или main методом), я получаю эту ошибку:

Error: Could not find or load main class Scratch

Я думаю, что IDE не Scratch.class и поэтому Java не может его найти. Есть ли способ решить эту проблему и запустить чистые файлы из IDE (без использования Terminal)?

4b9b3361

Ответ 1

Обновление

Я только что заметил, что эта проблема была исправлена в Android Studio 3.5!


Единственный способ заставить это работать (в Android Studio 3.4.1) - это очень грязный подход:

  1. Перейдите в Run> Edit Configurations> Scratch
  2. В Before launch внизу добавьте (+) Run External tool
  3. Во всплывающем окне "Внешние инструменты" нажмите + и введите следующее Tool Settings

    Имя: Compile Scratch

    Программа: javac

    Аргументы: $FileName$

    Рабочий каталог: каталог с пустыми файлами

  4. Нажмите ОК
  5. Снова во всплывающем окне "Внешние инструменты" нажмите + и заполните следующее Tool Settings

    Имя: Run Scratch

    Программа: java

    Аргументы: $FileClass$

    Рабочая директория: директория для ваших чистых файлов

  6. Нажмите "ОК" и "Применить" в "Конфигурации запуска/отладки"

Странно, но это работает, только если вы используете зеленые стрелки рядом с объявлением class/main. Если вы используете кнопку "Выполнить" в меню, это также не работает.

Вы все равно получите ошибку not found на вкладке Scratch окна запуска. Но появятся две дополнительные вкладки (по одной для каждого внешнего инструмента). На вкладке Run Scratch вы получите вывод.

Мне лично это не нравится, но это лучший обходной путь, который я придумал.