首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用gradle构建的shadowJar中使用truezip

在使用gradle构建的shadowJar中使用truezip
EN

Stack Overflow用户
提问于 2015-08-19 02:36:28
回答 2查看 373关注 0票数 1

我有一个用gradle编译的shadowJar,它使用truezip从压缩文件中获取一些文件。

我使用它得到了这个异常:

代码语言:javascript
复制
Exception in thread "main" java.util.ServiceConfigurationError: file (Unknown file system scheme! May be the class path doesn't contain the respective driver module or it isn't set up correctly?)
    at de.schlichtherle.truezip.fs.FsAbstractCompositeDriver.newController(FsAbstractCompositeDriver.java:33)
    at de.schlichtherle.truezip.fs.FsDefaultManager.getController0(FsDefaultManager.java:95)
    at de.schlichtherle.truezip.fs.FsDefaultManager.getController(FsDefaultManager.java:78)
    at de.schlichtherle.truezip.file.TBIO.getInputSocket(TBIO.java:280)
    at de.schlichtherle.truezip.file.TFileInputStream.newInputStream(TFileInputStream.java:101)
    at de.schlichtherle.truezip.file.TFileInputStream.<init>(TFileInputStream.java:95)

我这样设置了一个archiveDetector:

代码语言:javascript
复制
final TArchiveDetector ad = new TArchiveDetector("foo", new ZipDriver(IOPoolLocator.SINGLETON));
TConfig.get().setArchiveDetector(ad);

当我想创建一个像这样的输入流时,会抛出异常:

代码语言:javascript
复制
final TFileInputStream is = new TFileInputStream(thefile);

据我所知,shadowJar包含了所有必要的类,但可能缺少了什么?

我如何知道哪个类、哪个包丢失了?还有什么可能导致这种情况呢?

在eclipse中运行它是可行的.

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-08-20 15:02:38

这是创建uber-JAR时的一个常见问题:需要追加META-INF/services/*处的各个条目。但是,在默认情况下,许多工具在创建uber-JAR时会简单地覆盖它们。因此,ServiceLoader类无法找到所有必需的插件(例如,用于文件系统驱动程序),这就是此异常所抱怨的。

因此,您需要修复创建uber-JAR的工具的配置。如果您正在将Maven与maven-shade-plugin一起使用,那么您可以简单地添加ServicesResourceTransformer -参见https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ServicesResourceTransformer

另一种选择是根本不使用uber-JAR,这是使用Maven时的默认设置。

Eclipse可以读取Maven项目并从中建立其元数据,因此您可能希望考虑将您的项目转换为使用Maven -如果您还没有这样做的话。

票数 1
EN

Stack Overflow用户

发布于 2019-01-09 17:11:49

我也有同样的问题。经过研究,我找到了以下解决方案:

在您的build.gradle中添加以下内容:

代码语言:javascript
复制
shadowJar {
    mergeServiceFiles()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32080211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档