Компиляция Java-программ из CLI с использованием javac - PullRequest
0 голосов
/ 13 сентября 2010

У меня есть следующая форма структуры каталогов, где я вызываю javac

src / lib / build /

Под источником:

src / com / xyz / App.java - содержит основной класс
src / com / xyz / base / j1.java
src / com / xyz / base / j2.java
src / com / xyz / exceptions / e1.java
src / com / xyz / hibernate / factory / hbf1.java
src / com / xyz / hibernate / helper / hbh1.java


Под lib:

Библиотека / hibernate.jar

Библиотека / commons.jar



На верхнем уровне я использую следующую команду javac:

javac -verbose -classpath lib / hibernate.jar: lib / commons.jar -d ./build -sourcepath ./src com / xyz / *. Java

и я получаю следующий вывод

javac: нет совпадений

Как передать арги в javac?

А вот и ОТВЕТ :

javac -verbose -d build -classpath lib / commons.jar: lib / hibernate.jar [полный путь для ВСЕХ каталогов] / *. Java

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Возможно, я немного педантичен, но мне было интересно:

  -classpath ./lib/hibernate/jar:lib/commons.jar
#                           ^    ^^^
#                           |    shouldn't this be './lib', too?
#                           |
#                           shouldnt this be a '.'?
0 голосов
/ 13 сентября 2010

javac не расширяет подстановочные знаки, это то, что делает ваша оболочка. поэтому, когда вы указываете com / xyz / *. java, это ни к чему не приведет, так как эти файлы находятся в src /, но оболочка этого не знает. Если вы перечислите каждый Java-файл как com / xyz / Foo.java com / xyz / Bar.java и т. Д., Он должен работать.

(обратите внимание, что если вы работаете в Windows, вам нужно; а не: для разделения путей к классам)

Что-то вроде этого может работать:

javac -verbose -classpath build:lib/hibernate.jar:lib/commons.jar -d ./build  ./src/com/xyz/base/*java ./src/com/xyz/exceptions/*.java ./src/com/xyz/hibernate/factory/*.java ./src/com/xyz/*.java

Я бы не стал делать это иначе, как в качестве упражнения по компиляции из командной строки, в противном случае используйте инструмент сборки, такой как ant

...