gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:08:05 25 4
gpt4 key购买 nike

我有一个工作正常的 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>

“ant run”任务适用于此 jar。我如何在没有 Ant 的情况下运行这个项目?

最佳答案

使用 java -cp Main.jar main.Main-jar 用于带有 Manifest 说明哪个类将用作主类的捆绑 jar。您使用 -cp (以及在您的 ant 构建文件中)所做的只是将它放在主路径上:您指定 main.Main 作为主类明确地,不在 list 中。

您还应该将其他 jar 放在类路径中(例如 -cp lib/example1.jar:lib/example2.jar:Main.jar)。根据与 **/*.jar 匹配的内容,它们可能有很多。

关于java - 在命令行中运行一个 jar 文件(由 ant 生成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com