2015-08-19 2 views
1

я создал класс HT17создать объект класса в одном пакете

package useFul; 
class HT17 
{ 
    void show() 
    { 
     System.out.println("Hello World!"); 
    } 
} 

И я пытался к нему доступ из другого класса из того же пакета

package useFul; 
class HT18 
{ 
    public static void main(String[] args) 
    { 
     HT17 h =new HT17(); 
     h.show(); 
    } 
} 

Но я получаю сообщение об ошибке: Не удается найти символ HT17 Да, они находятся в одном каталоге, то есть useFul Решение было бы полезно!

+4

Вы уверены, что создали один из классов? –

+0

Наличие такого же имени пакета и того же пакета не всегда одинаково. Можете ли вы показать свое дерево проектов? Также: вы уверены, что вы скомпилировали HT17, прежде чем пытались запустить HT18 /? – Stultuske

+1

Сделайте ваши классы общедоступными, т. Е. «Публичный класс HT17» –

ответ

0

Скорее всего, вы используете javac <file name>, это создаст файл класса в той же папке, даже если у вас есть определенный пакет.

Таким образом, вы должны использовать опцию javac -d ., это создаст правильную структуру папок для классов. Попробуйте следующее.

$ javac HT17.java -d . 
$ javac HT18.java -d . 
$ java useFul.HT18 

The -d используется упомянуть, где создать скомпилированные классы с надлежащей структуры папок с использованием пакета. в примере ., используется текущий каталог.

+0

Большое спасибо! @karthikeyan, Могу ли я сделать это, не используя -d? – hthakkar8

+0

Вы можете, но вам нужно создать папку с именем «Полезно» и скопировать туда классы. -d делает это для вас. –

+0

Да, спасибо! @karthikeyan – hthakkar8

0

Сначала создайте папку с именем useFul и скопируйте туда классы, затем cmd для компиляции и запуска. cmd command:

javac useFul/HT18.java 
java useFul/HT18 
+0

Работает Спасибо @rafiq – hthakkar8

Смежные вопросы