我有以下目录结构表单,我在调用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
答案 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
这样的构建工具