- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Gradle(4.10.3,但我已经尝试了 5.4.1 之前的大多数版本)以及 JDK 12.0.1 和 org.beryx.jlink
插件(2.10.4 ),但每次尝试创建 jlink 图像时都会遇到此错误:
-> Task :createMergedModule
Cannot derive uses clause from service loader invocation in: com/fasterxml/jackson/databind/ObjectMapper$2.run().
Cannot derive uses clause from service loader invocation in: com/fasterxml/jackson/databind/ObjectMapper.secureGetServiceLoader().
Cannot derive uses clause from service loader invocation in: org/apache/commons/compress/utils/ServiceLoaderIterator.().
C:\Users\MyName\IdeaProjects\myapp\build\jlinkbase\tmpjars\myapp.merged.module\module-info.java:393: error: the service implementation does not have a default constructor: XBeansXPath provides org.apache.xmlbeans.impl.store.PathDelegate.SelectPathInterface with org.apache.xmlbeans.impl.xpath.saxon.XBeansXPath;
C:\Users\MyName\IdeaProjects\myapp\build\jlinkbase\tmpjars\myapp.merged.module\module-info.java:394: error: the service implementation does not have a default constructor: XBeansXQuery provides org.apache.xmlbeans.impl.store.QueryDelegate.QueryInterface with org.apache.xmlbeans.impl.xquery.saxon.XBeansXQuery; 2 errors
-> Task :createMergedModule FAILED
当我点击合并的 module-info.java
中抛出错误的行时,它指向以下两个:
provides org.apache.xmlbeans.impl.store.PathDelegate.SelectPathInterface with org.apache.xmlbeans.impl.xpath.saxon.XBeansXPath;
provides org.apache.xmlbeans.impl.store.QueryDelegate.QueryInterface with org.apache.xmlbeans.impl.xquery.saxon.XBeansXQuery;
我的 build.gradle
文件如下所示:
plugins {
id 'application'
id 'idea'
id 'java'
id 'org.openjfx.javafxplugin' version '0.0.7'
id 'org.beryx.jlink' version '2.10.4'
}
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.commons:commons-csv:1.6'
compile 'org.apache.poi:poi-ooxml:4.1.0'
compile 'com.fasterxml.jackson.core:jackson-core:2.9.9'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.9'
compile 'com.fasterxml.jackson.core:jackson-databind:2.9.9'
testCompile 'org.junit.jupiter:junit-jupiter-api:5.5.0-M1'
testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.5.0-M1'
}
// ### Application plugin settings
application {
mainClassName = "$moduleName/path.to.myapp"
}
// ### Idea plugin settings
idea {
module {
outputDir = file("out/production/classes")
}
}
// ### Java plugin settings
sourceCompatibility = JavaVersion.VERSION_11
compileJava {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
test {
useJUnitPlatform()
testLogging {
events 'PASSED', 'FAILED', 'SKIPPED'
}
}
// ### JavaFX plugin settings
javafx {
version = "12.0.1"
modules = ['javafx.controls', 'javafx.fxml']
}
// ### jlink plugin settings
jlink {
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
name = 'myapp'
}
}
关于如何解决这个问题有什么想法吗?
最佳答案
以下可能的解决方案仅基于您的构建文件,不知道您的模块信息或项目的代码,因此它可能行不通。
也是基于这个issue在 jlink 插件的存储库中。
首先,让我解释一下这个插件是如何工作的:由于 (JDK) jlink
工具不允许非模块化依赖项,插件将尝试收集所有这些依赖项并即时创建一个模块,可以添加到模块路径。此模块名为 $yourModuleName.mergedModule
。
现在我将您的依赖项添加到一个简单的 JavaFX 项目中。当我运行 ./gradlew jlink
时,我得到了与您发布的相同的错误。如果检查错误:
myapp\build\jlinkbase\tmpjars\myapp.merged.module\module-info.java:394: error
这表明创建的模块名为 myapp.merged.module
,并且它有一个 module-info
描述符。如果你打开它,你会看到所有的exports
(默认情况下模块会导出每个依赖包),requires
和provides
:
open module myapp.merged.module {
exports com.fasterxml.jackson.annotation;
exports com.fasterxml.jackson.core;
exports com.fasterxml.jackson.core.async;
...
exports schemaorg_apache_xmlbeans.system.sXMLTOOLS;
requires java.xml.crypto;
requires java.logging;
requires java.sql;
requires java.xml;
requires java.desktop;
requires java.security.jgss;
requires jdk.javadoc;
uses java.nio.file.spi.FileSystemProvider;
provides com.fasterxml.jackson.core.JsonFactory with com.fasterxml.jackson.core.JsonFactory;
provides com.fasterxml.jackson.core.ObjectCodec with com.fasterxml.jackson.databind.ObjectMapper;
provides org.apache.xmlbeans.impl.store.QueryDelegate.QueryInterface with org.apache.xmlbeans.impl.xquery.saxon.XBeansXQuery;
provides org.apache.xmlbeans.impl.store.PathDelegate.SelectPathInterface with org.apache.xmlbeans.impl.xpath.saxon.XBeansXPath;
}
那么现在的问题是:你是否应该在你自己的模块中增加一些需求?答案解释here : 这会增加不必要的项目大小。更好的方法是使用 mergedModule
脚本 block :
The mergedModule block allows you to configure the module descriptor of the merged module
和:
the module descriptor is created using the algorithm implemented by the
suggestMergedModuleInfo
task.
如果你运行 ./gradlew suggestMergedModuleInfo
你基本上会得到与上面相同的合并模块描述符的内容。
一个可能的解决方案是开始只向合并的模块描述符添加一些要求,然后重试。
我开始于:
jlink {
mergedModule {
requires "java.xml"
}
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
name = 'myapp'
}
}
我可以成功运行 ./gradlew jlink
。
如果您现在检查合并的模块描述符,它将如下所示:
open module myapp.merged.module {
requires java.xml;
exports com.fasterxml.jackson.annotation;
exports com.fasterxml.jackson.core;
exports com.fasterxml.jackson.core.async;
...
exports schemaorg_apache_xmlbeans.system.sXMLTOOLS;
}
只包含明确的requires
,所有导出,但没有provides
,所以错误将消失。
因为我没有你的代码,所以我不能说这是否适合你,但它对我有相同的依赖关系。
关于java - Gradle jlink 插件在 createMergedModule 期间失败,错误为 "the service implementation does not have a default constructor",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56512064/
自从我开始工作(约 6 年)以来,我一直是 .NET 的一员。最近在做一个使用Django的项目,需要并行学习Python。很多时候我碰到的 Python 代码看起来很简单,但我就是看不懂。这是其中之
谁能解释一下 JLS §8.4.8.4 中提到的“严格的default-abstract 和default-default 冲突规则” . 它们是否在 JLS 中定义?我似乎找不到他们的定义。 最佳答
我在我的启动图像通用项目中添加了“Default.png,Default-568h@2x.png,Default@2x.png”这三个文件,我有三个不同的图像,分辨率与苹果中提到的完全相同文档,适用于
我试图在删除 AWS RDS MySQL 数据库后删除默认的数据库参数组,但出现以下错误 Failed to delete default.mysql8.0: Default DBParameterG
我想使用 firebase 云函数发送通知,所以我尝试使用 firebase.messaging().getToken() 获取 token ,但我不断收到错误消息: TypeError: fireb
无法通过 Instagram 登录我的应用。我正在使用 react-native instagram 包,但我面临这个问题,因为 _react3.default.creteRef() 不是一个函数。引
从 Rust 1.6 开始,当前特征 Default定义为, pub trait Default { fn default() -> Self; } 为什么不是这个 pub trait Def
在我的第一次代码审查(不久前)中,我被告知在所有 switch 语句中包含默认子句是一种很好的做法。我最近想起了这个建议,但不记得其理由是什么。现在对我来说听起来很奇怪。 始终包含默认语句是否有合理的
这个错误很奇怪。在 firebase 中 react native 有什么问题我已经通过 npm install 安装了 firebase这是我的代码 import React, {Component
对于以下 3 种编译情况: gcc -o helloc hello.c (1) g++ -o hellocpp hello.cpp
我有一个 switch 语句。它几乎可以正常工作,但是它不仅显示一个案例,还显示选定的案例,然后显示默认案例。这是我的代码: var people = { names: ["Sam", "Tim"
这个问题在这里已经有了答案: Default keyword in Swift parameter (1 个回答) 关闭 6 年前。 我试图理解前置条件函数并遇到了“= default”。快速谷歌和
禁止!配置的服务帐户无权访问。服务帐户可能已被撤销。用户“system:serviceaccount:default:default”无法获取命名空间“mycomp-services-process”
我一直在我的 React 中广泛使用命名导出和默认导出,我遇到了这 2 个相似的语法。 从'./Button'导出默认值; export { default } from './Button'; 有人
我很困惑什么时候使用 .prototype 来扩展一个对象,什么时候不使用它。像下面的部分代码,为什么不在FacebookApi.defaults中使用.prototype,难道.prototype只
这个问题在这里已经有了答案: What is the difference between "var=${var:-word}" and "var=${var:=word}"? (4 个答案) 关闭
我想创建一个数据类基类,其中子类中的所有字段都自动可选且默认为无(如果未提供默认值)。 下面的代码……几乎可以满足我的要求,但又不完全是。它出错的方式就像我从未编写过 __init_subclass_
所以我有三个 Typescript 文件: 配置/env/development.ts import { Config } from '../config'; class DevConfig {
我在一个名为 Activity 的表中添加了一个名为 Ordinal 的新列。问题是我给了它一个 UNIQUE 约束,将它设置为允许 NULL(尽管我最终不会想要这个。我只需要将它设置为那个以使脚本更
嗨,我是 struts2 的新手,在我的项目中,我在注册页面使用 json-default 扩展,并使用validation.xml 文件验证它,在同一个项目中,我在登录页面使用 struts-def
我是一名优秀的程序员,十分优秀!