gpt4 book ai didi

gradle - 可执行 jar 在使用 gradle 任务创建后无法找到或加载主类

转载 作者:行者123 更新时间:2023-12-03 04:01:15 27 4
gpt4 key购买 nike

我使用 gluon 插件创建了一个新的单 View 项目,并且没有更改其文件中的任何内容。如果我使用 gradle 任务 application > run它工作正常。但是如果我使用 taks build > jar它在 SingleViewProject\build\libs 下创建了 jar当我从命令行运行它时,我得到

Error: Could not find or load main class com.gluonapplication.GluonApplication



这是未改动的 build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.1.1'
}
}

apply plugin: 'org.javafxports.jfxmobile'

repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}

mainClassName = 'com.gluonapplication.GluonApplication'

dependencies {
compile 'com.gluonhq:charm:4.1.0'
}

jfxmobile {
downConfig {
version = '3.0.0'
plugins 'display', 'lifecycle', 'statusbar', 'storage'
}
android {
manifest = 'src/android/AndroidManifest.xml'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}

和“主要类(class)”:
package com.gluonapplication;

import com.gluonhq.charm.glisten.application.MobileApplication;
import com.gluonhq.charm.glisten.visual.Swatch;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;

public class GluonApplication extends MobileApplication {

public static final String BASIC_VIEW = HOME_VIEW;

@Override
public void init() {
addViewFactory(BASIC_VIEW, () -> new BasicView(BASIC_VIEW));
}

@Override
public void postInit(Scene scene) {
Swatch.BLUE.assignTo(scene);

((Stage) scene.getWindow()).getIcons().add(new Image(GluonApplication.class.getResourceAsStream("/icon.png")));
}
}

确实没有 main类中的方法,但你不应该需要一个。它直接从 IDE 运行良好。有什么问题?

最佳答案

当您执行 jar在 Gluon 项目上执行任务,您将只获得一个 jar,其中包含项目的主包和桌面包下的类和资源。在你的情况下,是这样的:



该 jar 包含主类,但不包含任何依赖项(Gluon Charm)。

如果要创建可执行jar,需要创建shadowJarfatJar ,它捆绑了该 jar 中的所有依赖项。

您可以为其添加此插件:com.github.johnrengelman.shadow , 基于此 project .

添加插件后,您需要做的就是让它知道您的自定义配置,因为它不知道桌面配置。

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.1.1'
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
}
}

apply plugin: 'org.javafxports.jfxmobile'
apply plugin: 'com.github.johnrengelman.shadow'

...

// Add desktop dependencies to the task
shadowJar {
configurations = [project.configurations.desktopRuntime]
}

重新加载您的项目并执行 shadowJar .您可以在“任务”菜单下找到它:



您将在/builds/libs/yourProjectName-all.jar 下找到您的可执行 jar。

关于gradle - 可执行 jar 在使用 gradle 任务创建后无法找到或加载主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709489/

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