Java 为什么ant认为包不';不存在?
我有以下目录结构:Java 为什么ant认为包不';不存在?,java,ant,classpath,javac,Java,Ant,Classpath,Javac,我有以下目录结构: MyApp/ src/main/java/ com/ myapp/ api/ IFizz FizzLoader impl/ core/ FizzImpl Cat
MyApp/
src/main/java/
com/
myapp/
api/
IFizz
FizzLoader
impl/
core/
FizzImpl
Cat
Dog
Tree
...many other objects
src/test/java
...
build/
lib/
...
我只想编译src/main/java/com/myapp/api
以及com.myapp.impl.core.FizzImpl
下的所有内容,这样Cat
、Dog
、树
等就不会被编译(因此被排除在外)
在by Ant build(build.xml
)中,我配置了以下main.compile.path
:
<path id="src.path">
<fileset dir="src/main/java/com/myapp/api">
<include name="**.*java"/>
</fileset>
</path>
<path id="lib.main.path">
<fileset dir="lib/main">
<include name="**/*.jar"/>
</fileset>
</path>
<path id="main.compile.path">
<path refid="src.path" />
<path refid="lib.main.path" />
<fileset dir="src/main/java" includes="com/myapp/impl/core/**/*" />
</path>
当我运行main compile
时,我得到以下生成异常:
[javac] /home/myuser/eclipse/workspace/MyApp/src/main/java/com/myapp/api/FizzLoader.java:14: package com.myapp.impl.core does not exist
[javac] import com.myapp.impl.core.FizzImpl;
[javac] ...(omitting rest of trace but available upon request)
这里,FizzLoader
正在创建一个FizzImpl
的实例,因此我需要在编译路径上使用它
为什么Ant没有看到我选择性地添加到
main.compile.path
的com.myapp.impl.core.FizzImpl
?提前谢谢 javac的类路径应该引用包含已编译类文件树根的目录和jar文件。它不应该引用Java文件
同样,源目录应该引用源文件包树的根目录。不指向包树中与包对应的目录
编译任务应该如下所示
<target name="main-compile">
<javac includeantruntime="false"
srcdir="src/main/java"
destdir="${gen.bin.main.dir}"
debug="on"
includes="com/myapp/api/**/*.java, com/myapp/impl/core/FizzImpl/**/*.java">
<classpath refid="lib.main.path"/>
</javac>
</target>
<target name="main-compile">
<javac includeantruntime="false"
srcdir="src/main/java"
destdir="${gen.bin.main.dir}"
debug="on"
includes="com/myapp/api/**/*.java, com/myapp/impl/core/FizzImpl/**/*.java">
<classpath refid="lib.main.path"/>
</javac>
</target>