gpt4 book ai didi

java - 使用外部 Jar 文件中的 Main 方法从项目构建可运行的 Jar

转载 作者:行者123 更新时间:2023-11-29 09:10:59 27 4
gpt4 key购买 nike

我的教授已经决定为这个作业提供一个带有主要方法的外部 jar,我们应该为后端编写代码。我可以毫无问题地将这个 jar 放入我的项目并让它在 Eclipse 中运行,但是一旦我尝试导出可运行的 jar,我就会收到此错误:

“无法从给定的启动配置中找到主要方法”

这看起来很荒谬,因为无论何时我在 Eclipse 中运行它都能找到主要方法,我错过了什么?我已经尝试打开 jar 以获取 Manifest.mf 文件并为其提供外部 jar 内部主要类的名称,但它仍然无法找到它。

我也将 jar 添加到项目构建路径和类路径中,但这似乎没有什么不同。

list 文件只是说:

Manifest-Version: 1.0
Class-Path: .

我认为这是错误的,但我该如何正确设置呢?

-- 编辑 --

下面是我构建时 Eclipse 生成的 ANT 文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for Project Lab 1">
<!--this file was created by Eclipse Runnable JAR Export Wizard-->
<!--ANT 1.7 is required -->
<target name="create_run_jar">
<jar destfile="C:/lab.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="edu.wmich.cs1120.la1.solution_gui.MainWindow"/>
<attribute name="Class-Path" value="."/>
</manifest>
<zipfileset excludes="META-INF/*.SF" src="C:/LA1_GUI.jar"/>
<fileset dir="C:/bin"/>
</jar>
</target>

好的,当我编辑 Manifest.mf 以反射(reflect)它有效时,我知道需要将 Main-Class 属性设置为什么!但我仍然感到困惑,尤其是以下几行:

filesetmanifest="mergewithoutmain"
zipfileset excludes

如果我已经为我的项目指定了一个 main,为什么它会这样做?

最佳答案

类路径为“.”在您的 list 中,您需要将教授提供的 jar 放在您尝试从中运行创建的 jar 的同一目录中。否则可能有一种方法告诉 eclipse/ant 包含所有依赖项。

-更新-由于您正在使用来自依赖项的 Main 方法,因此您应该在 ant 构建 xml 中指定以下内容,然后重新构建。

 filesetmanifest="merge"

这会将其他 list 的主要部分合并到您的新 jar list 中。

关于java - 使用外部 Jar 文件中的 Main 方法从项目构建可运行的 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502167/

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