我的文件(这只是测试此导入的一个最小示例,因为它在其他地方出错了):TestTim_src / TestTim.java
import org.apache.sling.api.resource.ValueMap;
class TestTim {
public static void main(String[] args) {
System.out.printLn("aaaaap");
}
}
TestTim.xml:
<project>
<target name="compile">
<javac srcdir="${basedir}/TestTim_src">
<classpath>
<fileset dir="${basedir}/unzipped_dependencies/">
<include name="org/apache/sling/api/resource/ValueMap.class" />
</fileset>
</classpath>
</javac>
</target>
</project>
我这样运行它:
ant -f TestTim.xml -v编译
我收到此错误:
[javac] File to be compiled:
[javac] C:\XXX\TestTim_src\TestTim.java
[javac] C:\XXX\TestTim_src\TestTim.java:1: error: package org.apache.sling.api.resource does not exist
[javac] import org.apache.sling.api.resource.ValueMap;
[javac] ^
我检查了该文件是否为空,并且包含看似清晰的内容。 Sling是开源的,因此我可以只使用源代码,但是为了避免依赖性问题,我尝试使用编译的文件。
# javap -c unzipped_dependencies/org/apache/sling/api/resource/ValueMap.class
Compiled from "ValueMap.java"
public interface org.apache.sling.api.resource.ValueMap extends java.util.Map<java.lang.String, java.lang.Object> {
public static final org.apache.sling.api.resource.ValueMap EMPTY;
public abstract <T> T get(java.lang.String, java.lang.Class<T>);
public abstract <T> T get(java.lang.String, T);
static {};
Code:
0: new #1 // class org/apache/sling/api/wrappers/ValueMapDecorator
3: dup
4: invokestatic #2 // Method java/util/Collections.emptyMap:()Ljava/util/Map;
7: invokespecial #3 // Method org/apache/sling/api/wrappers/ValueMapDecorator."<init>":(Ljava/util/Map;)V
10: putstatic #4 // Field EMPTY:Lorg/apache/sling/api/resource/ValueMap;
13: return
}
我不知道为什么javac没有选择此导入。我在Windows 10上使用cygwin和oracle java。