如何使用 IntelliJ Idea 和 Gradle 将外部库添加到我的 jar 文件中?

问题描述 投票:0回答:1

我的 IntelliJ Idea 中有一个 Telegram Bot 项目,它在 IDE 中运行良好。

我的目标是构建一个 jar 文件以在 IDE 之外测试此应用程序。

构建 jar 文件后,我总是遇到同样的问题 -

Exception in thread "main" java.lang.NoClassDefFoundError: com/pengrad/telegrambot/TelegramBot

我使用 gradle,所以我在

build.gradle
中有这个(不是完整的库列表):

dependencies {
...
    implementation 'com.github.pengrad:java-telegram-bot-api:5.0.1'
...
}

然后我在 IntelliJ 中选择

Project Structure
->
Artifacts
-> + 号 -> jar -> 来自具有依赖项的模块

这是我的最后一个屏幕,我相信我添加了

java-telegram-bot-api...

的依赖项

我的 MANIFEST.MF 文件是:

Manifest-Version: 1.0
Main-Class: Socrates

所以我的代码可以一直工作到应该使用 Telegram 依赖项的地方

我尝试将类路径添加到

MANIFEST.MF
- 在那里添加电报包 jar 名称会增加新问题 - java 找不到主模块

你能帮我找到正确的方向吗?

java gradle intellij-idea jar manifest.mf
1个回答
0
投票

您可以继续沿着手动构建可执行 JAR 的路线,或者您可以使用内置 Gradle 方法来组合可执行 Java 应用程序,该方法在应用程序插件中提供。

首先确保应用此插件:

plugins {
    id 'application'
}

确保它知道你的主类:

application {
    mainClass = 'Socrates' // Use the fully qualified name
}

然后运行任务

installDist
,将您的应用程序安装在
build/install
文件夹中。这包括代码的 JAR 和依赖项 JAR,以及一些用于执行的脚本。 (有关更多详细信息,请参阅Distribution插件文档,这是由应用程序插件添加的插件。)

启动脚本位于

build/install/applicationName/bin
目录中(将
applicationName
替换为您的 Gradle 应用程序名称),一个用于 Unix 系统,一个用于 Windows。它们使用该主类名称和指向安装目录中的依赖项 JAR 的类路径执行
java
命令。

因此,例如在 Unix 上,您可以运行命令

build/install/applicationName/bin/applicationName
来运行您的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.