Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Раздельная компиляция родительского и дочернего классов не получается, если поместить их в пакет

17.12.2013, 22:55. Показов 2413. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
...То есть Гербердт Шилдт благополучно дошёл в своей книге до этого места, а как компилить- не сказал. Сказал разнести родительский и дочерний класс по разным файлам и мучайтесь дальше, как хотите. Несерьёзно

Так вот всё компилится:
Java
1
2
3
//parrent.java
public class parrent {
}
Java
1
2
3
//son.java
class son extends parrent {
}
++++++++++++++++++++++++++++++++++++++++ +++++++++++++

А вот так нет
Java
1
2
3
4
//parrent.java
package p1;
public class parrent {
}
Java
1
2
3
4
5
6
//son.java
package p1;
//Тут я поизгалялся всяко, но тщетно. В С++ я бы просто поключил сюда хидер parrent.h и дело с концом
//import ./ p1.parrent;
class son extends parrent {
}
Компилить надо ОТДЕЛЬНО, сперва parrent.java, потом son.java, то есть что-то типа:
Bash
1
2
javac parrent.java
javac son.java
++++++++++++++++++++++++++++++++++++++++ ++++++++++++

Не по теме:


Bash
1
javac parrent.java son.java
не предлагать.

Спасибо, кто откликнется.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2013, 22:55
Ответы с готовыми решениями:

Создание классов в С++. Раздельная компиляция
При создании класса C++ в VS создается два файла, "<имя_класса>.h" и "<имя_класса>.cpp", зачем они ? В каком сам класс писать?...

Раздельная компиляция шаблонов классов
При разделении шаблона класса на .h и .cpp линковщик ругается. Неужели в C++17 ещё не пофиксили это недоразумение и придётся писать всё в...

Раздельная компиляция шаблонных классов
Пытаюсь сделать класс, который определяет вектор. И содержит методы для работы с ними. Выдаёт эти ошибки и я не понимаю почему) ...

10
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
18.12.2013, 16:16
А какая ошибка возникает - мы сами должны догадаться?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
18.12.2013, 17:46  [ТС]
Цитата Сообщение от Skipy Посмотреть сообщение
А какая ошибка возникает - мы сами должны догадаться?
А вы бы скомпилили да узнали. Всё равно ведь компилить, не в уме же вы компилите. А вообще вот:

Bash
1
2
3
4
5
6
7
son.java:6: error: cannot access parrent
class son extends parrent {
                  ^
  bad class file: .\parrent.class
    class file contains wrong class: p1.parrent
    Please remove or make sure it appears in the correct subdirectory of the cla
sspath.
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
19.12.2013, 11:59
Ну, во-первых, тривиальный код мне компилировать совершенно необязательно, 17 лет опыта достаточно, чтобы уж результаты компиляции предсказывать просто по коду. Во-вторых, Ваш код должен скомпилироваться, если не предпринимать специальных усилий для того, чтобы это сломать.

Где лежат классы? Структуру директории приведите. Как компилируете класс parent? Точную командную строку приведите. Чем компилируете?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
19.12.2013, 16:09  [ТС]
Всё настолько просто, что и оговаривать дополнительно НЕЧЕГО. Самый наипростейший наинапрашивающийся наивероятнеший наиочевиднейший наилучший вариант. Вы о нём и подумали. Вот он:

папка p1, в папке исходники (я их приводил уже)

Java
1
2
3
4
//parrent.java
package p1;
public class parrent {
}
Java
1
2
3
4
//son.java
package p1;
class son extends parrent {
}
Находясь в папке p1, набираю команду (по факту две команды, следующие одна за другой, я кстати, писал это):

Bash
1
2
javac parrent.java
javac son.java
Результаты я тоже описывал:
Bash
1
2
3
4
5
6
7
son.java:6: error: cannot access parrent
class son extends parrent {
                  ^
  bad class file: .\parrent.class
    class file contains wrong class: p1.parrent
    Please remove or make sure it appears in the correct subdirectory of the cla
sspath.
Не описывал, пожалуй, чем компилю. Вот этим:
http://www.oracle.com/technetw... 80260.html

Установочный файл jdk-7u45-windows-i586.exe
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
19.12.2013, 21:00
Bash
1
2
javac -cp .. -d .. parrent.java
javac -cp .. -d .. son.java
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
19.12.2013, 22:13  [ТС]
Оно, конечно, скомплилилось. Но... но взять, к примеру, первую команду:
Bash
1
javac -cp .. -d .. parrent.java
Я так понимаю после -cp и -d мы указываем директорию и указываем, судя по всему, правильно. Эта директория родительская. А какой отсюда вывод? А такой, что если мы перейдём в родительскую директорию и её и укажем, то всё должно быть круто БЕЗ ДРУГИХ изменений. Переходим в родительскую директорию и командуем:

Bash
1
javac -cp . -d . parrent.java
безрезультатно (ошибки не нужно писать, надеюсь?) или даже
Bash
1
javac parrent.java
Странно всё это. Когда мы находимся в целевой директории, компилятор сам залезает в родительскую и сам чё надо ищет В РОДИТЕЛЬСКОЙ. А когда мы УЖЕ находимся в родительской он, вместо того, чтобы что-то там искать, выдаёт нам ошибки.

Вопрос напрямую к теме не относящийся, конечно, но всё равно важный.
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
20.12.2013, 10:56
А как компилятор поймет, в какой директории ему искать parrent.java? Он же не в родительской лежит, а в директории пакета. Отсюда и ошибки.

Вы не владеете основами. Почитайте вот это:
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.12.2013, 14:34  [ТС]
Цитата Сообщение от Skipy Посмотреть сообщение
А как компилятор поймет, в какой директории ему искать parrent.java?
Давно я так не озадачивался... Ну тогда: вы про какой случай говорите, про этот

Bash
1
javac -cp .. -d .. parrent.java
или про этот?

Bash
1
javac -cp . -d . parrent.java
или вообще про этот?

Bash
1
javac parrent.java
++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++

Что касается ссыли, то там далеко не всё идеально. Действительно, (взято оттуда):
Способ 2. Указание ключа -classpath интерпретатору (компилятору)
...
java -classpath ./classes;./lib/velocity-1.4.jar;./lib/log4j-1.2.8.jar ru.skipy.myproject.Main
...
java -classpath ./classes ru.skipy.myproject.Main
То есть дядька разбирает директиву -cp применительно к компилятору, а примеры приводит применительно к ИНТЕРПРЕТАТОРУ. Как-то не внушает доверия

Что касается связки javac+classpath, то там единственный пример:

Bash
1
javac -classpath ./classes -d ./classes src/mypackage/HelloWorld.java
и каким боком тут -classpath не объяснено. -d объяснено, да (не вникал, правда)

То есть есть громкая заявка на объяснение связки javac+classpath, оканчивающаяся пшиком. Извините.
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
20.12.2013, 15:42
Ну, если Вы не хотите понимать, заставить Вас никто не может.

P.S. Разницы в понимании classpath между компилятором и интерпретатором нет. Ибо компилятор - это класс, выполняющийся интерпретатором.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.12.2013, 17:26  [ТС]
Цитата Сообщение от Skipy Посмотреть сообщение
P.S. Разницы в понимании classpath между компилятором и интерпретатором нет. Ибо компилятор - это класс, выполняющийся интерпретатором.
Очень информативно. Я вам то же самое могу сказать; не хотите объяснять- не надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2013, 17:26
Помогаю со студенческими работами здесь

Одна высота у дочернего и родительского классов
Здравствуйте, такой вопрос возник. У меня есть менюшка я ее сделал фиксированной, при прокрутке. В ней есть всплывающие элементы при...

HTML верстка: Перенос нижнего дочернего блока если превышение высоты родительского
Есть родительский блок заданной высоты (ширина -100%), в нем вертикально один под другим расположены дочерние блоки также заданной...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru