首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.NoClassDefFoundError + ant -运行jar

java.lang.NoClassDefFoundError + ant -运行jar
EN

Stack Overflow用户
提问于 2013-08-26 18:36:04
回答 3查看 2.6K关注 0票数 0

标签- Selenium,以防有人在使用Ant创建selenium测试时遇到类似的问题。

我已经看到了很多关于这个话题的问题/答案,尝试了各种论坛上建议的所有选项,但我的问题仍然没有得到解决。基本上,我编译代码(包括测试脚本),创建JAR,然后运行相同的JAR。由于某些原因,它似乎不能在运行时标识库。当从Eclipse运行main()方法时,相同的代码(带有测试)工作得很好。这是build.xml,

代码语言:javascript
复制
<project default="run">

<target name="clean">
    <delete dir="build" />
</target>

<target name="init-classpath">
    <path id="lib.classpath">
        <fileset dir="./lib/">
            <include name="**.jar" />
        </fileset>
    </path>
    <pathconvert property="mf.classpath" pathsep=" ">
        <path refid="lib.classpath" />
        <flattenmapper />
    </pathconvert>
</target>

<target name="jar" depends="clean, init-classpath">
    <javac classpathref="lib.classpath" destdir="./compiled" failonerror="true" srcdir="./src" />
    <mkdir dir="build/jar" />
    <jar destfile="build/jar/BANC.jar" basedir="compiled">
        <manifest>
            <attribute name="Main-Class" value="com.portico.driver.TestDriver" />
            <attribute name="Class-Path" value="${mf.classpath}" />
        </manifest>
    </jar>
</target>

<target name="run" depends="jar">
    <java jar="build/jar/BANC.jar" fork="true">
    </java>
</target>

</project>

错误:-线程"main“工作簿中出现异常:jxl/java.lang.NoClassDefFoundError

清单内容

代码语言:javascript
复制
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_41-b02 (Sun Microsystems Inc.)
Main-Class: com.portico.driver.TestDriver
Class-Path: activation.jar commons-lang-2.4.jar jna-3.4.0.jar jxl.jar 
 logging-selenium-1.2.jar mail.jar ojdbc14.jar poi-3.0.2-FINAL.jar rep
 ortng-1.1.1.jar saxon-8.7.jar selenium-grid-demo-1.0.7.jar selenium-g
 rid-demo-standalone-1.0.7.jar selenium-grid-hub-1.0.7.jar selenium-gr
 id-hub-standalone-1.0.7.jar selenium-grid-remote-control-1.0.7.jar se
 lenium-grid-remote-control-standalone-1.0.7.jar selenium-grid-tools-1
 .0.7.jar selenium-grid-tools-standalone-1.0.7.jar selenium-server-1.0
 .3-standalone.jar selenium-server-standalone-2.33.0.jar sikuli-script
 .jar testng-6.8.jar velocity-1.7.jar
EN

回答 3

Stack Overflow用户

发布于 2013-08-29 18:03:45

首先要检查的是,问题是否与清单或其他东西有关。如果您可以使用java -cp <allthejarfiles> <main-class>运行您的应用程序,则问题与清单有关。请记住,清单中指定的jar文件是相对于jar文件的位置的。尝试使用-verbose:class选项运行应用程序时,会提示实际加载了哪些jar。

票数 0
EN

Stack Overflow用户

发布于 2013-08-31 11:12:35

您的清单采用当前工作目录中的jars。因此它需要将dir属性设置为jar所在的文件夹。

Java task 支持在参数中提供类路径。尝试在参数中提供类路径。

代码语言:javascript
复制
<target name="run" depends="jar">
    <java jar="build/jar/BANC.jar" fork="true"  dir="build/jar" >
        <classpath>
           <pathelement path="${lib.classpath}"/>
         </classpath>
    </java>
</target>
票数 0
EN

Stack Overflow用户

发布于 2013-09-04 00:09:58

我在我的项目中也遇到过同样的问题。我建议您为jar文件创建一个单独的目录,将所有jar放入该目录,然后将lib地址指向该目录。

例如,在您的示例中,假设我创建了一个目录D:/jar_collection,我将所有jars物理放置在该目录中。

代码语言:javascript
复制
<property name="lib.dir" value="D:/jar_collection"/>
<target name="setClassPath">
    <path id="classpath_jars">
        <fileset dir="${lib.dir}" includes="*.jar" />
    </path>
    <pathconvert pathsep=":" property="test.classpath" refid="classpath_jars" />
</target>

它工作得很好。请试一试。

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

https://stackoverflow.com/questions/18442111

复制
相关文章

相似问题

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