【发布时间】:2019-05-22 22:46:50
【问题描述】:
您好,我是 java 模块的新手,所以这可能是一个愚蠢的问题。
我尝试使用密钥库对我的 jar 文件进行签名,但出现以下错误。
user@Ubuntu:libs(master)$ jarsigner -keystore keyStoreFileName Test.jar alias
Enter Passphrase for keystore:
jarsigner: unable to sign jar: java.util.zip.ZipException: duplicate entry: module-info.class
我找不到任何有关如何避免这种情况的文档。
所以我做了 jar -tf 来检查 jar 的内容,是的,它确实有多个 module-info.class 文件
有没有组合它们的选项?以及如何?
我的 module-info.java 包含以下内容。
module module_name {
requires java.desktop;
requires java.prefs;
requires javafx.controls;
requires javafx.fxml;
requires javafx.web;
requires org.jsoup;
opens com.test.apps to javafx.fxml;
exports com.test.apps;
}
我正在用这样的 gradle 创建 jar
jar {
manifest {
attributes 'Main-Class': 'com.test.apps.Main'
attributes 'Application-Name': 'Test'
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
我知道我不应该发布屏幕截图,但这是使用存档管理器打开的 jar
有 7 个 module-info.class 文件,第一个在 2018 年 12 月 23 日(今天)生成,其余都是从 18 年 11 月 5 日开始的,我记得那天升级到 java 11,
所以这些是从我的依赖项中添加的,我怎样才能将它们集成到一个类中?还是有其他选择来签署一个罐子?
再次,这是来自菜鸟。
[编辑] 如果你正在寻找完整的源代码,它在 GitHub -> https://github.com/CodingOtaku/Animu-Downloaderu
【问题讨论】:
-
为什么你的 jar 文件中有多个
module-info.class? -
@nullpointer 我不知道,它是这样生成的。也许它正在从依赖项中添加所有 modules-info.class 我将添加一个屏幕截图
标签: java jarsigner java-11 jar-signing