正如@Victor说的,我认为您应该看看
Exception in thread "main" sun.misc.ServiceConfigurationError: javax.imageio.spi.ImageWriterSpi: Provider com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriterSpi could not be instantiated: java.lang.IllegalArgumentException: vendorName == null!
我昨天才遇到这个问题,这很棘手。有类似的问题在这里。我发现如果我在jar中包含了jai_imageio,并且没有修改清单文件以包含JAI清单文件的内容,或者没有在构建中将meta-
INF的services文件夹中的文件合并,那么我遇到了许多与您相似的错误。我的应用程序确实可以运行,但是由于JAI是在本地安装的,所以没有包含JAI,但我暂时选择使用JAI来构建它。
打开jar,您将找到一个名为meta-INF的目录。其中有文件MANIFEST.MF。我使用Maven在清单文件中包含JAI内容,因此它看起来像
Manifest-Version: 1.0Implementation-Title: com.sun.media.imageioImplementation-Version: 1.0_01Built-By: myNameSpecification-Vendor: Sun Microsystems, Inc.Created-By: Apache MavenImplementation-Vendor: Sun Microsystems, Inc.Build-Jdk: 1.6.0_43Specification-Title: Java Advanced Imaging Image I/O ToolsSpecification-Version: 1.0-mrExtension-Name: com.sun.media.imageioMain-Class: myMainArchiver-Version: Plexus Archiver
您应该在那里输入自己的名字和主要班级。如果不使用Maven(或Ant)使其工作,则可以修改此文件并在命令行上自行添加。我遇到了一个额外的问题,其中一些附带的jar覆盖了meta-
INF的services文件夹中的文件。相反,我使用Maven的Shade插件合并了这些文件。



