Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX错误:尝试运行jar文件时,无法找到或加载带有gradle(IntelliJ)的main类home.main_Java_Gradle_Jar - Fatal编程技术网

JavaFX错误:尝试运行jar文件时,无法找到或加载带有gradle(IntelliJ)的main类home.main

JavaFX错误:尝试运行jar文件时,无法找到或加载带有gradle(IntelliJ)的main类home.main,java,gradle,jar,Java,Gradle,Jar,我使用gradle生成一个jar文件来测试我的程序,但当我运行命令时: Java -jar file_name .jar 我总是犯同样的错误: Error: Could not find or load main class home.Main Caused by: java.lang.ClassNotFoundException: home.Main build.gradle: plugins { id 'java' id 'application' id 'or

我使用gradle生成一个jar文件来测试我的程序,但当我运行命令时:

Java -jar file_name .jar 
我总是犯同样的错误:

Error: Could not find or load main class home.Main
Caused by: java.lang.ClassNotFoundException: home.Main
build.gradle:

plugins {
    id 'java'
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.8'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'com.jfoenix:jfoenix:9.0.8'
}

javafx {
    version = "14"
    modules = [ 'javafx.controls', 'javafx.fxml']
}


jar {
    manifest {
        attributes(
                'Class-Path': configurations.compile.files.collect {"$it.name"}.join(' '),
                'Main-Class': 'home.Main')}
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

更新:

为了制作“fatJar”,我的build.gradle中的这项任务适合我:

task fatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': "home.Launcher"
    }
    baseName = 'Desired_fat_jar_name'
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    with jar
}
因此,您可以运行
gradlew-fatJar
将所有内容都放在一个jar中

它看起来非常接近您所拥有的,所以请尝试将您的更改为此,或者尝试从build.gradle中删除“类路径”部分


为了使用Java 9+启动非模块化JavaFX应用程序,您需要创建一个文件Launcher.Java,其内容如下:

package home;

/**
 * Class to launch the JavaFX application.
 *
 * This launcher class will allow launching a non-modular 9+ JavaFX application.
 */
public class Launcher
{
    /**
     * Main function executed by Java application
     * @param args
     */
    public static void main(String[] args)
    {
        Main.main(args);
    }
}
其中,“Main.Main”是类中扩展JavaFX应用程序类的主要函数


您还需要将build.gradle中的主类更改为“home.Launcher”。

我有相同的错误:
错误:无法找到或加载主类home.Launcher,原因是:java.lang.ClassNotFoundException:home.Launcher
在您的build.gradle中尝试添加:应用程序{//定义应用程序mainClassName='home.Launcher'的主类}