在命令行中运行一个jar文件(由ant生成)

Ora*_*nge 1 java ant build.xml jar javac

我有一个build.xml文件,工作正常.问题是生成的jar文件,我需要在没有'ant run'的情况下运行它

我该如何运行jar文件?跑着

java -jar Main.jar main.Main 
Run Code Online (Sandbox Code Playgroud)

给我:

Exception in thread "main" java.lang.NoClassDefFoundError: org/neo4j/graphdb/GraphDatabaseService
Run Code Online (Sandbox Code Playgroud)

这就是我创建jar文件(build.xml)的方法:

<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
    <jar destfile= "${jar.dir}/${ant.project.name}.jar" basedir="${build.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>

<target name="compile">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.dir}/${conf.dir}"/>
    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath" includeantruntime="false"/>
    <copy todir="${build.dir}/${conf.dir}">
        <fileset dir="${conf.dir}"/>
    </copy>
</target>

<target name="run" >
    <java fork="true" classname="${main-class}">
        <classpath>
            <path refid="classpath"/>
            <path location="${jar.dir}/${ant.project.name}.jar"/>
        </classpath>
    </java>
</target>

<path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
Run Code Online (Sandbox Code Playgroud)

"ant run"任务可以正常使用这个jar.如何在没有蚂蚁的情况下运行这个项目

Bru*_*uno 5

使用java -cp Main.jar main.Main,-jar适用于带有清单的捆绑罐,说明哪个类将用作主类.你正在做什么-cp(以及你的ant构建文件中)只是把它放在主路径上:你main.Main明确地指定为主类,而不是在清单中.

您还应该将其他jar放在类路径上(例如-cp lib/example1.jar:lib/example2.jar:Main.jar).根据匹配情况**/*.jar,可能会有很多匹配.