компилировать файлы из разных каталогов с помощью javac, ссылаясь на зависимый файл jar? - PullRequest
0 голосов
/ 18 мая 2011

У меня есть следующие настройки:

У меня есть 4 пакета:

  • root / src / terminal - содержит несколько java-файлов
  • root / src / mail - содержит несколько java-файлов
  • root / src / data - содержит несколько java-файлов
  • root / src / main - содержит один файл Java, Main.java

У меня также есть следующие файлы

  • root / bin - папка для хранения файлов .class
  • root / mail.jar - файл jar, в котором есть важные классы, используемые в моем коде

В корне я хотел бы ввести команду терминала, которая компилирует root / src / main / Main.java и помещает файлы классов в папку root / bin.

Может кто-нибудь показать мне команду, чтобы сделать это? Я на Mac (под управлением Leopard).

Ответы [ 3 ]

1 голос
/ 18 мая 2011

попробуйте это:

javac -cp "/root/mail.jar;/root/src;" -d "/root/bin" Main.java

Это написано в надежде, что в ваших классах есть объявления пакетов из папки src, такие как package terminal; и package main;.

См. Это: Опции в команде javac

Или используйте Apache Ant в соответствии с предложением maple_shaft.


Из комментария от @maple_shaft:
В операционных системах Unix Linux разделитель пути к классам - это точка с запятой, а не точка с запятой.

1 голос
/ 18 мая 2011

Вот один вкладыш:

cd /xyz/root
rm -rf bin/*
javac -d bin -classpath mail.jar -sourcepath src main/Main.java

В качестве альтернативы, вы можете использовать абсолютные имена каталогов:

rm -rf /xyz/root/bin/*
javac -d /xyz/root/bin -classpath /xyz/root/mail.jar \
      -sourcepath /xyz/root/src /xyz/root/ main/Main.java

В отношении Ant вы сказали «Я бы предпочел, чтобы все было просто». .

На самом деле в долгосрочной перспективе проще создать простой файл Ant build.xml. Альтернативой является набор непереносимых скриптов или командный файл ... или много печатания.


Чтобы запустить приложение, при условии, что вы все еще находитесь в каталоге /xyz/root:

java -classpath bin:mail.jar main.Main

Или в Windows:

java -classpath bin;mail.jar main.Main

Или измените приведенное выше, чтобы использовать абсолютные пути в аргументе classpath; например, * * 1 022

java -classpath /xyz/root/bin:/xyz/root/mail.jar main.Main
1 голос
/ 18 мая 2011

Не зная вашей операционной системы?

То, на что вы должны обратить внимание, это использовать Apache Ant. Это инструмент сборки, который после установки и настройки может использовать файл build.xml в корневом каталоге для компиляции файлов классов в папку, а также для упаковки файла jar.

http://ant.apache.org/

...