首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我尝试运行我的程序时出现Ant错误

当我尝试运行我的程序时出现Ant错误
EN

Stack Overflow用户
提问于 2013-06-04 23:38:33
回答 1查看 170关注 0票数 1

我在Ant中遇到了一个问题,这个问题一直困扰着我,我似乎没有找到解决方案。我在java中有一个RMI项目,该项目已经完成,和文件如下:

代码语言:javascript
复制
<project name="StockageRMI" default="compile">

    <target name="compile">
        <javac destdir="classes">
            <src path="src/db/"/>
            <classpath>
                <fileset dir="lib/">  
                    <include name="**/*.jar" />  
                </fileset>
                <fileset dir="classes/">  
                    <include name="**/*.class" />  
                </fileset>    
            </classpath>
        </javac>

        <javac destdir="classes">
            <src path="src/stockage"/>
            <classpath>
                <fileset dir="lib/">  
                    <include name="**/*.jar" />  
                </fileset>
                <fileset dir="classes/">  
                    <include name="**/*.class" />  
                </fileset>    
            </classpath>
        </javac>

        <javac destdir="classes">
            <src path="src/server"/>
            <classpath>
                <fileset dir="lib/">  
                    <include name="**/*.jar" />  
                </fileset>
                <fileset dir="classes/">  
                    <include name="**/*.class" />  
                </fileset>    
            </classpath>
        </javac>

        <javac destdir="classes">
            <src path="src/client"/>
            <classpath>
                <fileset dir="lib/">  
                    <include name="**/*.jar" />  
                </fileset>
                <fileset dir="classes/">  
                    <include name="**/*.class" />  
                </fileset>    
            </classpath>
        </javac>

    </target>

    <target name="rmic" depends="compile">
        <rmic classname="stockage.StockageImpl" base="classes/">
            <classpath>
                <fileset dir="lib/">  
                    <include name="**/*.jar" />  
                </fileset>
                <fileset dir="classes/">  
                    <include name="**/*.class" />  
                </fileset>    
            </classpath>
        </rmic>
    </target>

    <target name="runServer" depends="rmic,runStockage">
       <java classname="server.ServerImpl" fork="true" failonerror="true" >
            <classpath>
                <fileset dir="lib/">  
                    <include name="**/*.jar" />  
                </fileset>
                <fileset dir="classes/">  
                    <include name="**/*.class" />  
                </fileset>    
            </classpath>
       </java>
    </target>

    <target name="runStockage">
       <java classname="stockage.StockageImpl" fork="true" failonerror="true" >
            <classpath>
                <fileset dir="lib/">  
                    <include name="**/*.jar" />  
                </fileset>
                <fileset dir="classes/">  
                    <include name="**/*.class" />  
                </fileset>    
            </classpath>
       </java>
    </target>


</project>

目标"compile“和"rmic”运行正常,问题是当我尝试运行"runStockage".I时得到错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.NoClassDefFoundError: stockage/StockageImpl
     [java] Caused by: java.lang.ClassNotFoundException: stockage.StockageImpl
     [java]  at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
     [java]  at java.security.AccessController.doPrivileged(Native Method)
     [java]  at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
     [java]  at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
     [java]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
     [java]  at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
     [java] Java Result: 1

这非常奇怪,因为如果我尝试在终端中执行此操作,java命令运行良好,并且它具有与javac相同的类路径,因为它具有相同的依赖关系:

代码语言:javascript
复制
javac -cp lib/mongo-java-driver-2.11.1.jar:lib/rmiio-2-1.0.0.jar:lib/commons-logging-1.1.3.jar:classes -d classes src/stockage/StockageImpl.java

rmic -classpath lib/mongo-java-driver-2.11.1.jar:lib/rmiio-2-1.0.0.jar:lib/commons-logging-1.1.3.jar:classes -d classes stockage.StockageImpl

java -classpath lib/mongo-java-driver-2.11.1.jar:lib/rmiio-2-1.0.0.jar:lib/commons-logging-1.1.3.jar:classes server.ServerImpl

以上三个命令都工作得很好,问题出在ant上。正如您所看到的,javac、java和rmic使用相同的依赖项和jar文件,所以我在Ant中做了同样的事情,但它不起作用。我确信在这个过程中这是件很愚蠢的事情,但是在过去的6个小时里我似乎不能理解它。有谁有线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-04 23:59:34

我认为问题可能出在您的源路径上;请尝试查看您的classes文件夹,看看您是否有包含StockageImpl.class文件的stockage文件夹。

我认为您可能想要将编译目标的源路径更改为src而不是src/stockage (这也允许您有一个<compile>任务而不是两个),或者如果您出于任何原因仍然想要将它们分开,例如您只需要编译stockagedb中的文件而不是其他文件,那么您应该将destdir分别更改为classes/stockageclasses/db

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16921949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档