| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > java -sourcepath в linux |
| Автор: hatalsky 12.12.2010, 00:40 | ||||||||||||||||
есть такая структура каталогов
файл hello.java начинается со строки
и есть две переменные среды
переходим в каталог с исходниками
компилируем приложение так
получаем .class файл там где нужно, исполняем так(из любого каталога исполняется)
всё работает, а теперь внимание, вопрос я хочу компилировать файл так же как и исполнять из любого каталого, man javac говорит что для этого есть аргумент -sourcespath, но следующая команда нифига не помогает делаем сразу cd / что бы проверить в реальных условиях, а потом компилируем так
и видим
видимо я неправильный параметр указываю в -sourcepath но увы нигде не могу найти как это сделать правильно( может кто-то подскажет решение моей проблемы? |
| Автор: dobrolub 12.12.2010, 08:07 |
| параметер -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 и скомпилит его тоже. Я там случайно на минус звездочки надавил (хотел посмотреть как работает, но обратно вернуть не удалось). Извини. |
| Автор: mstalker26 12.12.2010, 11:50 | ||
| Отличная статья, связанная с SOURCEPATH и CLASSPATH. Так сказать факультативный материал http://www.ibm.com/developerworks/ru/library/j-classpath-unix/ P.S. По поводу твоей строчки, разве не должно быть
P.P.S. Названия классов пишут с большой буквы |
| Автор: hatalsky 12.12.2010, 13:57 |
| dobrolub, за статью спасибо, но я её уже видел(благодаря ей с classpath разобрался, а вот sourcepath не осилил). Как работает sourcepath теперь понял, но интересно, а так, как я хотел(компилировать из любого места не прописывая путей к исходникам) это вообще возможно? mstalker26 В вашем случае вы прописываете полный путь к исходникам, чего я как раз и хотел избежать разбираясь с sourcepath. P.S: Вы немного не точно указали путь к исходнику: ~/java/src/gui/hello.java, поправьте, мб кому-нить пригодится эта информация, а тут будет ошибка( P.P.S: И ещё вопросик: а будет ли javac брать sourcepath из какой-нить переменной среды, как она это делает в случае с classpath, и если будет, то из какой? |
| Автор: dobrolub 12.12.2010, 21:39 |
| Да, компилить можно из любого места прописывая путь к исходникам. Путь может быть как абсолютным /tmp/x/y/z/Z.java так и относительным к текущему каталогу. |