【问题标题】:Ant -verbose fails with "package does not exist" despite jar being on classpath尽管 jar 在类路径上,但 Ant -verbose 失败并显示“包不存在”
【发布时间】:2011-04-27 21:06:52
【问题描述】:

我有以下代码

package myPackage;

import org.neo4j.graphdb;
import org.neo4j.kernel.EmbeddedGraphDatabase;

public class dbServlet extends HttpServlet {

public void init() throws ServletException {
    // Start up the database here                                                      
    GraphDatabaseService graphDb = new EmbeddedGraphDatabase("var/base");

}

public void destroy() {
    graphDb.shutdown();

}

和 build.xml 文件:

<project name="dbServlet" basedir="." default="compile">

  <property name="src.dir" value="src"/>
  <property name="lib.dir" value="lib"/>
  <property name="build.dir"  value="build"/>
  <property name="classes.dir"  value="${build.dir}/classes"/>
  <property name="jar.dir"  value="${build.dir}/jar"/>

  <path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
  </path>

    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
    </target>

</project>

所有 neo4j jar 都位于 build.xml 文件所在的 lib 目录中。源代码位于 src/myPackage/dbServlet.java。当我运行 ant -v 时,类路径包括具有 neo4j 类的 jar,但 javac 表示这些包不存在。有谁知道为什么会这样?

这是错误的 sn-p(我现在关心第一个错误,我知道 servlet api 还没有在路径上):

[javac] /home/shaun/projects/helloAnt/src/myPackage/dbServlet.java:3: package org.neo4j does not exist
[javac] import org.neo4j.graphdb;
[javac]                 ^
[javac] /home/shaun/projects/helloAnt/src/myPackage/dbServlet.java:6: cannot find symbol
[javac] symbol: class HttpServlet
[javac] public class dbServlet extends HttpServlet {
[javac]                                ^
[javac] /home/shaun/projects/helloAnt/src/myPackage/dbServlet.java:8: cannot find symbol
[javac] symbol  : class ServletException
[javac] location: class myPackage.dbServlet
[javac]     public void init() throws ServletException {
[javac]                               ^

【问题讨论】:

  • ant -verbose 或 ant -debug 然后检查消息。如果 jar 不存在,ant 会默默地从类路径中删除它们。
  • 试过了,neo4j-kernel-1.1.jar 有 org.neo4j。 [javac] 编译参数:[javac] '-d' [javac] '/home/shaun/projects/helloAnt/build/classes' [javac] '-classpath' [javac] '/home/shaun/projects/helloAnt/构建/类:/home/shaun/projects/helloAnt/lib/jline-0.9.94.jar:/home/sh aun/projects/helloAnt/lib/lucene-core-2.9.2.jar:/home/shaun/项目/helloAnt/lib/neo4j-apo c-examples-1.1.jar:/home/shaun/projects/helloAnt/lib/neo4j-graph-algo-0.6.jar:/home/shaun/projects/helloAnt/lib/neo4j -kernel-1.1 .jar: ....

标签: java ant classpath package javac


【解决方案1】:

在我看来,您的导入不太正确 - 您要导入 org.neo4j.graphdb 包中的所有类吗?

import org.neo4j.graphdb.*;

否则你应该给出一个特定的类名。 javac 错误消息表明正在寻找包org.neo4j - graphdb 被视为类名。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多