2010-08-05 1 views
26

Я пишу makefile, который компилирует файл .java в другой каталог, а затем я хочу запустить его, не меняя каталогов. Я хочу сделать что-то вдоль линий:Как я могу скомпилировать и запустить класс Java в другом каталоге?

$(SQM_JAVA_TOOL_DONE) : $(SQM_JAVA_TOOL) 
     $(shell cd /home_dir) 
     javac myjavafile.java 
     java myjavafile 

где файл Java является /home/myjavafile.java и Makefile не работает от /home.

Как я могу это сделать?

+1

Почему бы вам не создать сценарий Ant и передать полный путь к муравью build.xml для компиляции ваших java-файлов? –

ответ

32

я мог бы быть недопонимание вопрос, но вы можете скомпилировать с

javac /home/MyJavaFile.java 

Это создаст MyJavaFile.class в /home

Вы можете запустить его, в том числе /home на пути к классам. например

java -cp /home MyJavaFile 

Если вы хотите создать файл класса в другой каталог, то вы можете использовать опцию -d для javac.

+1

Я попробовал 'java -cp '.: Lib/dropbox-core-sdk-1.7.5.jar: lib/jackson-core-2.2.3.jar: lib/javax.mail.jar"/bin Client1', но компоновщик выплюнул: 'Ошибка: не удалось найти или загрузить основной класс .bin'. – Andrei

32

Используйте параметр -d командной строки с javac, чтобы сказать ему, что каталог, который вы хотели бы хранить скомпилированные файлы классов в Затем, чтобы запустить программу, просто включите этот каталог в путь к классам:.

javac -d some/directory myjavafile.java 
java -cp some/directory myjavafile 
Смежные вопросы