Top.Mail.Ru
Ответы

Как исправить эту ошибку в java?

вот публичный класс

package itproger;


public class Main {


    public static void main(String[] args) {

        Transport bmw = new Transport();

        bmw.speed = 250.5f;

        bmw.weight = 2453;

        bmw.color = "Green";

        bmw.coordinate = new byte[] {0, 0, 0};


        Transport truck = new Transport();

        truck.speed = 130;

        truck.weight = 5002;

        truck.color = "red";

        truck.coordinate = new byte[] {100, 0, 100};


        System.out.println("Truck speed: " + truck.speed + " BMW speed: " + bmw.speed);

    }

}

вот другой класс

package itproger;


public class Transport {

    public float speed;

    public int weight;

    public String color;

    public byte[] coordinate;

},

и выдает такую ошибку:

tempCodeRunnerFile.java:3: error: class Main is public, should be declared in a file named Main.java

public class Main {

^

tempCodeRunnerFile.java:6: error: cannot find symbol

Transport bmw = new Transport();

^

symbol: class Transport

location: class Main

tempCodeRunnerFile.java:6: error: cannot find symbol

Transport bmw = new Transport();

^

symbol: class Transport

location: class Main

tempCodeRunnerFile.java:12: error: cannot find symbol

Transport truck = new Transport();

^

symbol: class Transport

location: class Main

tempCodeRunnerFile.java:12: error: cannot find symbol

Transport truck = new Transport();

^

symbol: class Transport

location: class Main

5 errors,

что с этим делать??

По дате
По рейтингу
Аватар пользователя
Ученик
1мес

пхп наше всё

Аватар пользователя
Ученик
1мес

емае, я только на lua

Аватар пользователя
Ученик
1мес

прив альберт

Аватар пользователя
Мастер
1мес

Эти ошибки возникают из-за того, что ваш редактор кода неправильно компилирует проект, состоящий из нескольких файлов. В Java действуют строгие правила именования, и используемое вами расширение нарушает их.

Причины ошибок

Ваша первая ошибка связана с тем, что в Java публичный класс обязан находиться в файле с точно таким же именем. Расширение Code Runner в VS Code создает для запуска временный файл tempCodeRunnerFile.java, что вызывает конфликт имен. Вторая ошибка «cannot find symbol» появляется потому, что компилируется только один временный файл, и компилятор просто не знает о существовании вашего второго класса Transport.^1

Правильное решение

Для многофайловых проектов необходимо соблюдать структуру папок и использовать правильные инструменты компиляции. Создайте папку с именем itproger (так как у вас указан пакет package itproger;) и поместите в нее два отдельных файла: Main.java и Transport.java. Удалите расширение Code Runner и установите официальный пакет "Extension Pack for Java" от Microsoft, после чего запускайте код кнопкой Run прямо над методом main, чтобы оба файла скомпилировались вместе.^2

Альтернативное решение

Если вы хотите быстро протестировать код без настройки структуры проекта, вы можете объединить оба класса в один файл. Для этого переименуйте ваш текущий файл строго в Main.java. Затем поместите код класса Transport в этот же файл ниже Main, обязательно удалив у него слово public, так как в одном файле Java допускается только один публичный класс.^3

1234567891011121314151617181920212223242526
package itproger;

public class Main {
    public static void main(String[] args) {
        Transport bmw = new Transport();
        bmw.speed = 250.5f;
        bmw.weight = 2453;
        bmw.color = "Green";
        bmw.coordinate = new byte[] {0, 0, 0};

        Transport truck = new Transport();
        truck.speed = 130;
        truck.weight = 5002;
        truck.color = "red";
        truck.coordinate = new byte[] {100, 0, 100};

        System.out.println("Truck speed: " + truck.speed + " BMW speed: " + bmw.speed);
    }
}

class Transport { // Убрали слово public
    public float speed;
    public int weight;
    public String color;
    public byte[] coordinate;
}



Видео по теме