Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ant:尽管指定了类路径并且文件看起来有效,但编译失败_Java_Ant_Sling - Fatal编程技术网

Java Ant:尽管指定了类路径并且文件看起来有效,但编译失败

Java Ant:尽管指定了类路径并且文件看起来有效,但编译失败,java,ant,sling,Java,Ant,Sling,我的文件(这只是测试此导入的一个最小示例,因为它在其他地方出错):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="

我的文件(这只是测试此导入的一个最小示例,因为它在其他地方出错):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>
我检查了一下,这个文件不是空的,里面有一些看起来清晰的东西。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
}
#javap-c解压依赖项/org/apache/sling/api/resource/ValueMap.class
从“ValueMap.java”编译而来
公共接口org.apache.sling.api.resource.ValueMap扩展了java.util.Map{
public static final org.apache.sling.api.resource.ValueMap为空;
公共抽象T get(java.lang.String,java.lang.Class);
公共摘要T get(java.lang.String,T);
静态{};
代码:
0:new#1//classorg/apache/sling/api/wrappers/valuemapdecotor
3:dup
4:invokestatic#2//方法java/util/Collections.emptyMap:()Ljava/util/Map;
7:invokespecial#3//方法org/apache/sling/api/wrappers/valuemapdecotor。”:(Ljava/util/Map;)V
10:putstatic#4//字段为空:Lorg/apache/sling/api/resource/ValueMap;
13:返回
}

我不知道javac为什么不接受这个导入。我在Windows10上使用cygwin和oracle java

您可以尝试从ant“回显”类路径,以查看在类路径中编译过程中所有可用的内容。另外,请使用像eclipse或intellij这样的ide。这只是不必要的、毫无意义的痛苦。谢谢你的提示。事实上,我不是eclipse/intellij的大用户。但是我不确定这对预编译的jar有什么帮助。IDEs非常擅长指出这样的问题。这似乎只是一个类路径问题。此外,如果从ant config中删除元素,问题似乎也会消失。由于类结构是从类路径开始的,因此如果.class文件包含文件夹结构org/apache/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
}