Пакет Say не существует

Я кодировал на java, чтобы протестировать пакеты. У меня есть папка Demo внутри Demo. У меня есть 2 папки, одна называется Say, а другая - OtherMainClass.

в папке Say у меня есть класс SayClass.java вот код:

package Say;

public class SayClass {
public void sayTestMessage() {
    System.out.println("This is a test");
  }
}

в папке OtherMainClass у меня есть файл с именем OtherMain.java, вот код:

import Say.*;

public class OtherMain {
   public static void main(String[] args){
      SayClass s = new SayClass();

      s.sayTestMessage();
   }
}

когда я компилирую OtherMain.java, я получаю следующую ошибку:

OtherMain.java:1: error: package Say does not exist
import Say.*;
^
OtherMain.java:5: error: cannot find symbol
    SayClass s = new SayClass();
    ^
symbol:   class SayClass
location: class OtherMain
OtherMain.java:5: error: cannot find symbol
      SayClass s = new SayClass();
                     ^
symbol:   class SayClass
location: class OtherMain
3 errors

Почему Java не может найти пакет Say? Если я неправильно понимаю пакеты, объясните, что я делаю неправильно, а что правильно.

Где компилируете из материи; имена пакетов следуют за именами каталогов.
Dave Newton 10.11.2018 04:54

@failedProgrammer Я не уверен, что вы пытаетесь сказать, - если они возникли проблемы с этим, Maven / Ant / Gradle, конечно, не поможет. Там нет необходимости, чтобы перейти к системе сборки / зависимости понять пакет именование или каталоги конвенций.

Dave Newton 10.11.2018 04:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
260
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы должны использовать инструкцию ниже при импорте в OtherMain

import Demo.Say.SayClass

Кроме того, в названии пакета используются строчные буквы, так что любезно проведите рефакторинг кода, чтобы использовать его вместо Say to say и Demo в demo. А также при создании SayClass используйте пакет demo.say. Итак, ваш код должен быть похож на

package demo.say;
public class SayClass {
public void sayTestMessage() {
    System.out.println("This is a test");
  }
}

после того, как вы переименуете все пакеты в нижний регистр, вы можете использовать

import demo.say.SayClass 

или

import demo.say.*

в классе OtherMain

Предложения: Лучше использовать стандартную версию IDE сообщества, такую ​​как Intellij Idea, Eclipse и т. д., Которая автоматически заботится об именах пакетов, соглашениях и множестве других вещей по дому.

и просмотрите документы / руководства по соглашению об именах Java, такие как https://www.javatpoint.com/java-naming-conventions

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