не удается найти команду javac с ошибкой символа

#java

#java

Вопрос:

Я использую терминал для компиляции и сборки программ Java. Итак, у меня есть 2 класса CP1 и CP2 принадлежат имени пакета current , которые реализованы в 2 отдельных файлах .java — CP1.java и CP2.java хотя классы тривиальны, вот код

CP1.java :

 package current;
public class CP1{
                  void hello(){
                               System.out.println("CP1 class is used");
                  }
   }
  

CP2.java :

 package current;
public class CP2{
                  public static void main(String [] args){
                               System.out.println("CP2 class is used");
                               CP1 c= new CP1();
                  }
   }
  

Поскольку CP1 и CP2 определены в одном пакете, я не импортирую текущий пакет. Оба .файлы java находятся в том же каталоге. CP1.java компилируется, и в результате получается CP1.class досье. Теперь я пытаюсь скомпилировать CP2.java с опцией with -cp в качестве:

 javac -cp . CP2.java
  

Однако это приводит к сообщению об ошибке:

 symbol: class CP1    
location: class CP2
CP2.java.  error: cannot find symbol 
                  CP1=new CP1
  

Я пробовал разные пути к cp, но все равно получаю одно и то же сообщение об ошибке. Что я делаю не так?

Комментарии:

1. не следует ли имя класса вашего CP2.java должен быть класс CP2

2. конечно, эта опечатка

3. прочитайте обновленный ответ, я его протестировал, сработал и убедитесь, что нет опечаток

Ответ №1:

вам не хватает имени переменной экземпляра, поэтому оно должно быть таким

 CP1  objname = new CP1();
  

не это

 CP1 = new CP1();
  

Примечание: objname может быть заменено любым допустимым именем переменной, чтобы вы могли искать в Интернете рекомендации по именованию / как назвать переменную или можете попробовать официальную ссылку на документ

Обновление: выполните следующие действия для компиляции

1.) Похоже, вы находитесь в том месте, где существует файл, поэтому просто сделайте это

 javac -d . CP1.java

javac -d . CP2.java
  

-d сгенерирует для вас пакет, если его там нет.

Комментарии:

1. извините, в исходном коде CP1 c= new CP1(), конечно

2. @olzhabala вы можете принять мой ответ, нажав на галочку sumbol (слева), чтобы поблагодарить меня. счастливого кодирования