JavaFX错误:尝试运行jar文件时,无法找到或加载带有gradle(IntelliJ)的main类home.main
我使用gradle生成一个jar文件来测试我的程序,但当我运行命令时: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
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'的主类}