gradle 的 JLink 插件给出错误,无法找到文件

eri*_*k p 5 java javafx intellij-idea gradle jlink

我正在尝试创建一个独立的运行时映像,如答案中所述。当我尝试从 gradle 的“Badass JLink”插件运行 JLink 任务时,出现以下错误:

Execution failed for task ':prepareMergedJarsDir'. > java.io.IOException: Cannot run program "C:\Program" (in directory "C:\Users\erik\AppData\Local\Temp\badass-2371206120064261418"): CreateProcess error=2, The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)

我似乎无法在插件文档中找到有关此类错误的任何文档。

我的build.grade文件如下:

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

group 'CAM'
version '0.2'
sourceCompatibility = 11

repositories {
    mavenCentral()
}

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

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'net.sourceforge.htmlunit:htmlunit:2.13'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
    compile group: 'net.lingala.zip4j', name: 'zip4j', version: '1.2.4'
}

jlink {
    options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
    launcher {
        name = 'CAM'
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

奇怪的是,今天回来后,错误现在不同了。我没有改变任何东西,所以我想重新启动我的电脑可能会影响它?

我现在得到的错误是

Execution failed for task ':createMergedModule'.
> Unsupported major.minor version 56.0
Run Code Online (Sandbox Code Playgroud)

使用 --stacktrace 运行我得到

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':createMergedModule'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.accept(ExecuteActionsTaskExecuter.java:121)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.accept(ExecuteActionsTaskExecuter.java:117)
    at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:184)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:110)
    at org.gradle.api.internal.tasks.execution.ResolveIncrementalChangesTaskExecuter.execute(ResolveIncrementalChangesTaskExecuter.java:84)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
    at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionStateTaskExecuter.execute(ResolveBeforeExecutionStateTaskExecuter.java:74)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:109)
    at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
    at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:94)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:63)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:46)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.module.InvalidModuleDescriptorException: Unsupported major.minor version 56.0
    at java.base/jdk.internal.module.ModuleInfo.invalidModuleDescriptor(ModuleInfo.java:1092)
    at java.base/jdk.internal.module.ModuleInfo.doRead(ModuleInfo.java:196)
    at java.base/jdk.internal.module.ModuleInfo.read(ModuleInfo.java:132)
    at org.beryx.jlink.util.Util.getModuleDescriptor(Util.groovy:340)
    at org.beryx.jlink.util.ModuleManager$_closure1.doCall(ModuleManager.groovy:32)
    at org.beryx.jlink.util.ModuleManager$_closure1.call(ModuleManager.groovy)
    at org.beryx.jlink.util.ModuleManager.<init>(ModuleManager.groovy:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at org.beryx.jlink.util.SuggestedMergedModuleInfoBuilder.getRequiresBuilders(SuggestedMergedModuleInfoBuilder.groovy:69)
    at org.beryx.jlink.util.SuggestedMergedModuleInfoBuilder.getModuleInfo(SuggestedMergedModuleInfoBuilder.groovy:41)
    at org.beryx.jlink.impl.CreateMergedModuleTaskImpl.genModuleInfoBadass(CreateMergedModuleTaskImpl.groovy:111)
    at org.beryx.jlink.impl.CreateMergedModuleTaskImpl.genModuleInfo(CreateMergedModuleTaskImpl.groovy:67)
    at org.beryx.jlink.impl.CreateMergedModuleTaskImpl$genModuleInfo.callCurrent(Unknown Source)
    at org.beryx.jlink.impl.CreateMergedModuleTaskImpl.execute(CreateMergedModuleTaskImpl.groovy:46)
    at org.beryx.jlink.CreateMergedModuleTask.createMergedModuleAction(CreateMergedModuleTask.groovy:106)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:48)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:705)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:672)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$4.run(ExecuteActionsTaskExecuter.java:338)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:327)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:312)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:75)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:158)
    at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:46)
    at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
    at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
    at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
    at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)
    at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:49)
    at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:42)
    at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:28)
    at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:133)
    at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$5(CacheStep.java:83)
    at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
    at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:37)
    at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
    at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
    at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
    at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:95)
    at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:88)
    at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
    at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
    at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:109)
    ... 37 more
Run Code Online (Sandbox Code Playgroud)

编辑2

将 build.gradle 中的源兼容性从 11 更改为 12 并更新 gradle 以使用 JDK 12 进行编译修复了该错误,但现在我得到了

the unnamed module reads package javax.xml from both ClassicAddonManager.merged.module and java.xml
Run Code Online (Sandbox Code Playgroud)

并且 merged.module/module-info.java 有以下错误:

package.org.apache.xalan.extensions.bsf does not exist
package.org.apache.bsf does not exist
cannot find symbol class DOMImplementationSourceList
cannot find symbol class driver
Run Code Online (Sandbox Code Playgroud)

编辑3 这是它生成的 module-info.java :

open module ClassicAddonManager.merged.module {
    exports com.gargoylesoftware.htmlunit;
    exports com.gargoylesoftware.htmlunit.attachment;
    exports com.gargoylesoftware.htmlunit.gae;
    exports com.gargoylesoftware.htmlunit.html;
    exports com.gargoylesoftware.htmlunit.html.applets;
    exports com.gargoylesoftware.htmlunit.html.impl;
    exports com.gargoylesoftware.htmlunit.html.xpath;
    exports com.gargoylesoftware.htmlunit.javascript;
    exports com.gargoylesoftware.htmlunit.javascript.background;
    exports com.gargoylesoftware.htmlunit.javascript.configuration;
    exports com.gargoylesoftware.htmlunit.javascript.host;
    exports com.gargoylesoftware.htmlunit.javascript.host.arrays;
    exports com.gargoylesoftware.htmlunit.javascript.host.canvas;
    exports com.gargoylesoftware.htmlunit.javascript.host.css;
    exports com.gargoylesoftware.htmlunit.javascript.host.dom;
    exports com.gargoylesoftware.htmlunit.javascript.host.geo;
    exports com.gargoylesoftware.htmlunit.javascript.host.html;
    exports com.gargoylesoftware.htmlunit.javascript.host.svg;
    exports com.gargoylesoftware.htmlunit.javascript.host.xml;
    exports com.gargoylesoftware.htmlunit.javascript.regexp;
    exports com.gargoylesoftware.htmlunit.protocol.about;
    exports com.gargoylesoftware.htmlunit.protocol.data;
    exports com.gargoylesoftware.htmlunit.protocol.javascript;
    exports com.gargoylesoftware.htmlunit.svg;
    exports com.gargoylesoftware.htmlunit.util;
    exports com.gargoylesoftware.htmlunit.xml;
    exports com.google.gson;
    exports com.google.gson.annotations;
    exports com.google.gson.internal;
    exports com.google.gson.internal.bind;
    exports com.google.gson.internal.bind.util;
    exports com.google.gson.reflect;
    exports com.google.gson.stream;
    exports com.steadystate.css.dom;
    exports com.steadystate.css.parser;
    exports com.steadystate.css.parser.selectors;
    exports com.steadystate.css.sac;
    exports com.steadystate.css.userdata;
    exports com.steadystate.css.util;
    exports java_cup.runtime;
    exports javax.xml;
    exports javax.xml.datatype;
    exports javax.xml.namespace;
    exports javax.xml.parsers;
    exports javax.xml.stream;
    exports javax.xml.stream.events;
    exports javax.xml.stream.util;
    exports javax.xml.transform;
    exports javax.xml.transform.dom;
    exports javax.xml.transform.sax;
    exports javax.xml.transform.stax;
    exports javax.xml.transform.stream;
    exports javax.xml.validation;
    exports javax.xml.xpath;
    exports net.lingala.zip4j.core;
    exports net.lingala.zip4j.crypto;
    exports net.lingala.zip4j.crypto.PBKDF2;
    exports net.lingala.zip4j.crypto.engine;
    exports net.lingala.zip4j.exception;
    exports net.lingala.zip4j.io;
    exports net.lingala.zip4j.model;
    exports net.lingala.zip4j.progress;
    exports net.lingala.zip4j.unzip;
    exports net.lingala.zip4j.util;
    exports net.lingala.zip4j.zip;
    exports net.sourceforge.htmlunit.corejs.classfile;
    exports net.sourceforge.htmlunit.corejs.javascript;
    exports net.sourceforge.htmlunit.corejs.javascript.annotations;
    exports net.sourceforge.htmlunit.corejs.javascript.ast;
    exports net.sourceforge.htmlunit.corejs.javascript.commonjs.module;
    exports net.sourceforge.htmlunit.corejs.javascript.commonjs.module.provider;
    exports net.sourceforge.htmlunit.corejs.javascript.debug;
    exports net.sourceforge.htmlunit.corejs.javascript.jdk13;
    exports net.sourceforge.htmlunit.corejs.javascript.jdk15;
    exports net.sourceforge.htmlunit.corejs.javascript.json;
    exports net.sourceforge.htmlunit.corejs.javascript.optimizer;
    exports net.sourceforge.htmlunit.corejs.javascript.regexp;
    exports net.sourceforge.htmlunit.corejs.javascript.serialize;
    exports net.sourceforge.htmlunit.corejs.javascript.tools;
    exports net.sourceforge.htmlunit.corejs.javascript.tools.debugger;
    exports net.sourceforge.htmlunit.corejs.javascript.tools.debugger.treetable;
    exports net.sourceforge.htmlunit.corejs.javascript.tools.shell;
    exports net.sourceforge.htmlunit.corejs.javascript.v8dtoa;
    exports net.sourceforge.htmlunit.corejs.javascript.xml;
    exports netscape.javascript;
    exports org.apache.bcel;
    exports org.apache.bcel.classfile;
    exports org.apache.bcel.generic;
    exports org.apache.bcel.util;
    exports org.apache.bcel.verifier;
    exports org.apache.bcel.verifier.exc;
    exports org.apache.bcel.verifier.statics;
    exports org.apache.bcel.verifier.structurals;
    exports org.apache.commons.codec;
    exports org.apache.commons.codec.binary;
    exports org.apache.commons.codec.digest;
    exports org.apache.commons.codec.language;
    exports org.apache.commons.codec.language.bm;
    exports org.apache.commons.codec.net;
    exports org.apache.commons.collections;
    exports org.apache.commons.collections.bag;
    exports org.apache.commons.collections.bidimap;
    exports org.apache.commons.collections.buffer;
    exports org.apache.commons.collections.collection;
    exports org.apache.commons.collections.comparators;
    exports org.apache.commons.collections.functors;
    exports org.apache.commons.collections.iterators;
    exports org.apache.commons.collections.keyvalue;
    exports org.apache.commons.collections.list;
    exports org.apache.commons.collections.map;
    exports org.apache.commons.collections.set;
    exports org.apache.commons.io;
    exports org.apache.commons.io.comparator;
    exports org.apache.commons.io.filefilter;
    exports org.apache.commons.io.input;
    exports org.apache.commons.io.monitor;
    exports org.apache.commons.io.output;
    exports org.apache.commons.lang3;
    exports org.apache.commons.lang3.builder;
    exports org.apache.commons.lang3.concurrent;
    exports org.apache.commons.lang3.event;
    exports org.apache.commons.lang3.exception;
    exports org.apache.commons.lang3.math;
    exports org.apache.commons.lang3.mutable;
    exports org.apache.commons.lang3.reflect;
    exports org.apache.commons.lang3.text;
    exports org.apache.commons.lang3.text.translate;
    exports org.apache.commons.lang3.time;
    exports org.apache.commons.lang3.tuple;
    exports org.apache.commons.logging;
    exports org.apache.commons.logging.impl;
    exports org.apache.html.dom;
    exports org.apache.http;
    exports org.apache.http.annotation;
    exports org.apache.http.auth;
    exports org.apache.http.auth.params;
    exports org.apache.http.c