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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
使用ant生成后,主线程java.lang.noclassdeffounderror中出现异常_Java_Ant - Fatal编程技术网

使用ant生成后,主线程java.lang.noclassdeffounderror中出现异常

使用ant生成后,主线程java.lang.noclassdeffounderror中出现异常,java,ant,Java,Ant,我使用以下ant脚本构建并部署了一个项目: <?xm1 vertion="1.0" ?> <project name="my project" default="build" basedir="."> <path id="project-classpath"> <fileset dir="lib" includ

我使用以下ant脚本构建并部署了一个项目:

<?xm1 vertion="1.0" ?>
<project name="my project" default="build" basedir=".">

    <path id="project-classpath">
        <fileset dir="lib" includes="*.jar" />
    </path>
    
    <target name="build">
        <echo>Build</echo>
        <antcall target="clean"/>
        <antcall target="init"/>
        <antcall target="compile"/>
        <antcall target="package"/>
        <antcall target="deploy"/>
    </target>
    
    <target name="clean">
        <echo>Clean</echo>
        <delete dir="build/classes"/>
        <delete dir="dist"/>
    </target>
    
    <target name="init" depends="clean">
        <echo>Init</echo>
        <mkdir dir="build/classes"/>
        <mkdir dir="dist"/>
    </target>

    <target name="compile" depends="init">
        <echo>Compile</echo>
        <javac srcdir="src/myproject" destdir="build/classes"  classpathref="project-classpath"/>
    </target>

    <target name= "package" depends= "compile">
        <echo>Package</echo>
        <jar destfile="dist/project.jar" basedir="build/classes">
            <manifest>
                <attribute name="Main-Class" value="myproject.Main"/>
            </manifest>
        </jar>
    </target>

    <target name="deploy" depends="package">
        <echo>Deploy</echo>
        <echo message="Dir: ${user.home}"/>
        <copy todir="${user.home}">
            <fileset dir="dist"/>
        </copy>
    </target>
    
</project>

建造
清洁的
初始化
编撰
包裹
部署
当我检查部署jar文件的目录时,我会找到project.jar文件,但当我使用以下命令运行它时:

java-jarproject.jar

我有以下一些错误:

线程“main”java.lang.NoClassDefFoundError中出现异常: javax/ws/rs/core/MultivaluedMap at java.lang.Class.GetDeclarativeMethod0(本机方法)

(如果我使用IDE运行,它可以正常工作。)

在我的project.jar中,我有以下树结构:

project.jar

..…我的项目(文件夹)

主类(文件)

..…META-INF(文件夹)

……MANIFEST.MF(文件)

文件MANIFEST.MF包含以下内容:

清单版本:1.0

Ant版本:ApacheAnt 1.9.6

创建人:1.7.0_79-b14(Oracle公司)

主类:myproject.Main


有人知道我做错了什么吗?

运行jar时,需要在类路径中包含一个javax.ws.rsAPIjar库

java -classpath javax.ws.rs-api-2.0.1.jar -jar project.jar

NoClassDefFoundError
表示该类在编译时存在,但在运行时丢失。 换句话说,运行生成的jar时,
javax/ws/rs/core/MultivaluedMap
不在类路径中

在IDE中,项目使用的外部库(jar)不包括在生成的jar中


因此,您需要添加到类路径所需的库中,在本例中,
jsr311api

如何查看我正在使用的jsr311的版本?当我看到这个项目时,我看到其中一个lib是javax.ws.rs-api-2.0.1.jar,这和这个lib有关系吗?是的,我想你可以用那个。你在用Eclipse吗?启用“与编辑器链接”功能,找到您在代码中使用的库的方法或类,将光标放在上面,然后按F3:您将在哪个jar中结束?完成后,它会打开jar文件javax.ws.rs-api-2.0.1.jar的一个新选项卡。您是否将javax.ws.rs-api-2.0.1.jar放在project.jar的同一目录中?