簡體   English   中英

在命令行中運行jar文件(由ant生成)

[英]run a jar file (generated by ant) in command line

我有一個可以正常工作的build.xml文件。 問題是生成的jar文件,我需要在不運行“ ant run”的情況下運行它

如何運行jar文件?

java -jar Main.jar main.Main 

給我:

Exception in thread "main" java.lang.NoClassDefFoundError: org/neo4j/graphdb/GraphDatabaseService

這就是我創建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>

“螞蟻運行”任務與此罐子一起正常工作。 我如何在沒有螞蟻的情況下運行該項目?

使用java -cp Main.jar main.Main-jar用於捆綁的jar,並帶有清單,說明要使用哪個類作為主類。 您使用-cp (在您的ant構建文件中)所做的只是將其放在主路徑上:您將main.Main明確指定為主要類,而不是在清單中。

您還應該將其他jar放在類路徑中(例如-cp lib/example1.jar:lib/example2.jar:Main.jar )。 根據匹配**/*.jar ,可能有很多。

你有沒有嘗試過:

java -jar Main.jar

您是否檢查過Main.jar實際上是否包含org/neo4j/graphdb/GraphDatabaseService類?

neo4j.jars在運行時丟失。 添加一個類路徑參數,例如:

java -cp yourLibDir -jar Main.jar

您需要在命令行中添加-classpath xxx.jar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM