Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> java -sourcepath в linux, принцип работы -sourcepath 
:(
    Опции темы
hatalsky
  Дата 12.12.2010, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 22.6.2009

Репутация: нет
Всего: нет



есть такая структура каталогов
Код

/home/username/java
------------------------------+/src
------------------------------------+/gui
------------------------------------------hello.java
------------------------------+/bin
------------------------------------+/gui
------------------------------------------hello.class

файл hello.java начинается со строки
Код

package gui;

и есть две переменные среды
Код

export CLASSPATH=/home/username/java/bin/
export SRCPATH=/home/username/java/src/

переходим в каталог с исходниками
Код

cd ~/java/src

компилируем приложение так
Код

javac -d $CLASSPATH ./gui/hello.java

получаем .class файл там где нужно, исполняем так(из любого каталога исполняется)
Код

java gui.hello

всё работает, а теперь внимание, вопрос
я хочу компилировать файл так же как и исполнять из любого каталого, man javac говорит что для этого есть аргумент -sourcespath, но следующая команда нифига не помогает
делаем сразу cd / что бы проверить в реальных условиях, а потом компилируем так
Код

javac -d $CLASSPATH -sourcespath $SRCPATH gui/hello.java

и видим
Код

javac: file not found: gui/hello.java
Usage: javac <options> <source files>
use -help for a list of possible options

видимо я неправильный параметр указываю в -sourcepath но увы нигде не могу найти как это сделать правильно(
может кто-то подскажет решение моей проблемы?
PM MAIL   Вверх
dobrolub
Дата 12.12.2010, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



параметер -sourcepath синонимичен параметру -classpath - он используется для того, чтобы указать компилятору где искать зависимости. Допустим, что ты компилируешь класс qa.Test, который зависит от qa.AbstractTest.

qa.AbstractTest в директории /tmp/abstract
qa.Test в директории /tmp/test

Для того чтобы скомпилировать класс qa.Test надо компилятору указать где поискать исходники зависимостей (в данном случае  - qa.AbstractTest) 

и комманда для компиляции qa.Test будет выглядеть следующим образом.

tmp $ javac -sourcepath abstract qa/Test.java

javac будет комилить qa/Test.java, а когда ему понадобиться найти класс qa.AbstractTest он поищет его в директории /tmp/abstract и скомпилит его тоже.

Я там случайно на минус звездочки надавил (хотел посмотреть как работает, но обратно вернуть не удалось). Извини.


PM   Вверх
mstalker26
Дата 12.12.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 4.7.2009

Репутация: 4
Всего: 11



Отличная статья, связанная с SOURCEPATH и CLASSPATH. Так сказать факультативный материал  smile .
http://www.ibm.com/developerworks/ru/libra...classpath-unix/

P.S. По поводу твоей строчки, разве не должно быть
Код

javac -d $CLASSPATH -sourcespath $SRCPATH /home/username/java/src/gui/hello.java


P.P.S. Названия классов пишут с большой буквы  smile 

Это сообщение отредактировал(а) mstalker26 - 12.12.2010, 16:52
--------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
PM   Вверх
hatalsky
Дата 12.12.2010, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 22.6.2009

Репутация: нет
Всего: нет



dobrolub, за статью спасибо, но я её уже видел(благодаря ей с classpath разобрался, а вот sourcepath не осилил).
Как работает sourcepath теперь понял, но интересно, а так, как я хотел(компилировать из любого места не прописывая путей к исходникам) это вообще возможно?

mstalker26 В вашем случае вы прописываете полный путь к исходникам, чего я как раз и хотел избежать разбираясь с sourcepath.
P.S: Вы немного не точно указали путь к исходнику: ~/java/src/gui/hello.java, поправьте, мб кому-нить пригодится эта информация, а тут будет ошибка(

P.P.S: И ещё вопросик: а будет ли javac брать sourcepath из какой-нить переменной среды, как она это делает в случае с classpath, и если будет, то из какой?

Это сообщение отредактировал(а) hatalsky - 12.12.2010, 14:00
PM MAIL   Вверх
dobrolub
Дата 12.12.2010, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



Да, компилить можно из любого места прописывая путь к исходникам. Путь может быть как абсолютным /tmp/x/y/z/Z.java  так и относительным к текущему каталогу.

Это сообщение отредактировал(а) dobrolub - 13.12.2010, 02:06
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1208 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.