Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 2
Регистрация: 30.09.2013
Сообщений: 89

Пакеты в Java

05.09.2015, 13:49. Показов 2048. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Изучаю Java(мой первый язык) Сейчас читаю книгу Герберт Шилдт - Полный справочник по Java SE6. Дошёл до 9 главы"Пакеты и интерфейсы" и застопорился. Не могу разобраться с командной строкой.
Объясните пожалуйста что я делаю не так? У меня есть иерархия классов Box, Box2 extends Box, Box3 extends Box2. В них есть какой-то код. Так же есть класс Salary в котором есть метод main(). Ниже привожу все четыре класса.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class Salary
{
 
    public static void main(String[] args)
    {
       Box3 box = new Box3();
        System.out.println(box.i);
        System.out.println(box.getClass());
        System.out.println(box.hashCode());
        System.out.println(box);
 
 
 
    }
}
abstract class Box
{
    public int i = 2;
    public int j = 3;
 
    abstract public void show();
 
}
class Box2 extends Box{
    public int k = 4;
 
    public void showy() {
        System.out.println(i+j+k);
    }
    public void show(){
        System.out.println("Переопределил метод");
    }
 
}
class Box3 extends Box2
{
    public int i = 5;
 
    final public void showt(){
        System.out.println("Класс Box3");
    }
}
Сохраняю эти в классе в одном файле в директории D:\Java\src\Project. В cmd компилируется и работает все норм.

Теперь хочу попробовать import. Разбиваю один файл на 4шт. Иерархию Box'ов кидаю в пакет D:\Java\src\Boxers. Получается 4 файла как ниже.

Файл Salary.java:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import Boxers.*;
 
public class Salary
{
 
    public static void main(String[] args)
    {
       Box3 box = new Box3();
        System.out.println(box.i);
        System.out.println(box.getClass());
        System.out.println(box.hashCode());
        System.out.println(box);
 
 
 
    }
}

Файл Box.java:

Java
1
2
3
4
5
6
7
8
abstract public class Box
{
    public int i = 2;
    public int j = 3;
 
    abstract public void show();
 
}

Файл Box2.java:

Java
1
2
3
4
5
6
7
8
9
10
11
public class Box2 extends Box{
    public int k = 4;
 
    public void showy() {
        System.out.println(i+j+k);
    }
    public void show(){
        System.out.println("Переопределил метод");
    }
 
}
Файл Box3.java:

Java
1
2
3
4
5
6
7
8
public class Box3 extends Box2
{
    public int i = 5;
 
    final public void showt(){
        System.out.println("Класс Box3");
    }
}
Когда пытаюсь скомпилировать программу, то как я понял не может найти Box'ы(картинка ниже). Что я делаю не правильно, может упустил что-то, если не трудно подскажите пожалуйста. Буду очень признателен. Спасибо. Подобное делал в Intellij, там все работает.
Миниатюры
Пакеты в Java  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2015, 13:49
Ответы с готовыми решениями:

Скиньте задачи на основные пакеты java
понакидайте задачек по основам java.

Где размещена пакеты JAVA, которые подключаются с помощью IMPORT?
где могут быть размещена пакеты JAVA, которые подключаются с помощью IMPORT? Корневая папка JDK выглядит так. .. lib |папка ...

Создать сервлет и взаимодействующие с ним пакеты Java-классов и HTML-страницы
Привет уважаемые форумчане. Помогите кто может с заданием Создать сервлет и взаимодействующие с ним пакеты Java-классов и HTML-страницы ...

7
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
05.09.2015, 21:25
Лучший ответ Сообщение было отмечено dispetch как решение

Решение

так, а разве не надо в каждом из четырех файлов написать первой строкой
Java
1
package такой-то;
Добавлено через 46 секунд
...и закинуть их в папку с соотвествующим названием "такой-то"
1
61 / 61 / 15
Регистрация: 18.05.2015
Сообщений: 322
06.09.2015, 00:01
Автор, скачай Eclipse. IDE реально упрощает такие вещи.
1) создаем New Java project;
2) клацаем по создавшемуся проекту и даем New -> Packedge, задаем имя пакета.
2) Клацаем по пакету и создаем классы (там будет указано в поле package уже имя нашего пакета).
Шаг 3 повторяем столько раз, сколько классов нужно создать в этом пакете.
А то создавать это все руками слишком уныло.
Потом, если уж интересно разобраться, можно и посмотреть, как эклипс это все делает (по сути, так, как и написали выше)
0
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
06.09.2015, 00:04
klopik, он же пишет, что в IntelliJ IDEA делал и всё "ок"

Добавлено через 30 секунд
вопрос видимо в понимании того, как сделать с командной строки...
0
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 4
06.09.2015, 00:42
Лучший ответ Сообщение было отмечено dispetch как решение

Решение

В Новой папке создаешь файл Salary.java и папку Boxers(будет твой package). В файле Salary делаешь import Boxers.*; В папке Boxers создаешь три файла Box.java Box2.java Box3.java. В каждом из трех файлов декларируешь package Boxers; в начале класса, потом сам класс. Из директории Новой папки в командной строке пишешь javac Salary.java Boxers/Box.java Boxers/Box2.java Boxers/Box3.java и жмешь Enter. Из этой же директории запускаешь java Salary. Успехов
0
1 / 1 / 2
Регистрация: 30.09.2013
Сообщений: 89
06.09.2015, 10:29  [ТС]
ildwine, спасибо, package прописал везде, скомпилировалось всё удачно. Правда теперь другая проблема возникла. Запускать не хочет(((

klopik, я идею пользую, там все получается...
Миниатюры
Пакеты в Java  
0
1 / 1 / 2
Регистрация: 30.09.2013
Сообщений: 89
06.09.2015, 10:36  [ТС]
serg66-88, срасибо, все получилось. Как я понял, выше у меня не запускалась программа, потому что я в классе Salary pakage тоже прописал. Сейчас его убрал и все заработало. Правда ещё не понял почему так? Плюс еще зашел в командной строке в директорию где лежит программа..
0
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 4
06.09.2015, 16:44
Import statement используется, когда классу нужны классы из других package. Salary и классы Box находятся в разных папках, это сам смысл, зачем нужны import statements. Import не нужен, если бы все классы были в одной папке. package declaration нужен, чтобы компилятор знал, в какой папке взять нужные тебе классы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2015, 16:44
Помогаю со студенческими работами здесь

Exception in thread "main" java.lang.IllegalArgumentException: illegal component position at java.desktop/java.awt.Cont
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class...

Пакеты
При компиляции программы выскакивает такая фигня,из-за чего это может быть?В каталоге у меня сам файлик и 2 classa. Вродебы все...

пакеты
Как скачать пакет с зависимыми пакетами в определенную папку без установки зная команду на установки и интернета? Допустим есть команда: ...

Не проходят пакеты
Есть роутер, внутренние сети и подключение IPSEC к другому филиалу (тоже роутер cisco). Нужно подключение pptp для получения доступа к...

Битые пакеты
не могу поставить ни одну программу на убунте. Ни с помощью apt-get install, ни из центра приложений. В консоли пишет мол имеются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru