使用javac从CLI编译java程序

时间:2010-09-13 16:09:18

标签: javac

我有以下目录结构表单,我在调用javac

  

src / lib / build /

在src下:

  

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下:

  

LIB / hibernate.jar

     

LIB / commons.jar


 
在顶层,我使用以下javac命令:

  

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

我收到以下输出

  

javac:不匹配

如何将args传递给javac?

这是 ANSWER

  

javac -verbose -d build -classpath lib / commons.jar:lib / hibernate.jar [所有目录的完整路径] / * .java

2 个答案:

答案 0 :(得分:1)

也许我在这里有点迂腐,但我想知道:

  -classpath ./lib/hibernate/jar:lib/commons.jar
#                           ^    ^^^
#                           |    shouldn't this be './lib', too?
#                           |
#                           shouldnt this be a '.'?

答案 1 :(得分:0)

javac不会扩展通配符,这就是你的shell所做的。所以当你指定com / xyz / * .java时,它不会扩展为任何东西,因为那些文件在src /下,但shell不知道。如果你将每个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

这样的构建工具