从自定义类导入时,无法对XMLBeans jar进行签名

时间:2014-11-15 03:44:48

标签: java apache-poi xmlbeans jar-signing

在NetBeans中,我创建了一个Exporter类,它使用APACHE POI将一些数据导出到EXCEL文件,该文件使用XMLBeans。

我通过下载zip二进制文件并手动添加jar来添加APACHE POI 3.10.1库。

当我在同一个项目中使用这个类时,一切都正常运行。

然后我通过右键单击Libraries将这个类添加到另一个项目 - >添加项目。

但是当我尝试运行时,我在编译时遇到了以下错误。

Signing JAR: C:\Users\c\p\dist\lib\xmlbeans-2.6.0.jar to C:\Users\c\p\dist\lib\xmlbeans-2.6.0.jar as nb-jfx
jarsigner: unable to sign jar: java.util.zip.ZipException: duplicate entry:    org/apache/xmlbeans/xml/stream/Location.class
Enter Passphrase for keystore: Enter key password for nb-jfx: 
C:\Users\c\p\nbproject\jfx-impl.xml:1465: The    following error occurred while executing this line:
C:\Users\c\p\nbproject\jfx-impl.xml:2968: The following error occurred while executing this line:
C:\Users\c\p\nbproject\jfx-impl.xml:1940: jarsigner   returned: 1

我不知道这可能是什么,但让我发疯。

2 个答案:

答案 0 :(得分:14)

在XMLBEANS Jira中打开了一个定义此问题的错误。 https://issues.apache.org/jira/browse/XMLBEANS-499其中一条评论报告修复。我还没试过,但我正在这样做。看看吧。

更新:已解决。事后看来,解决方案是显而易见的,但如果正确创建了.jar,那就很痛苦。解压缩(我只是将.jar扩展名更改为.zip并继续).jar将删除重复的.class文件(本例中为8),然后使用jar工具重新创建.jar文件。该命令是:“jar cf(path)\ xmlbeans-2.6.0.jar -C(解压缩文件夹路径)。”不要忘记命令末尾的句号。然后我将新的xmlbeans-2.6.0.jar复制到我的lib目录中,现在一切正常。希望这有助于其他人! : - )

答案 1 :(得分:0)

如果您正在使用maven,可以尝试解压缩xmlbeans依赖项。

<executions>
<execution>
    <id>unpack-dependencies</id>
    <phase>package</phase>
    <goals>
        <goal>unpack</goal>
    </goals>
    <configuration>
        <artifactItems>
            <artifactItem>
                <groupId>org.apache.xmlbeans</groupId>
                <artifactId>xmlbeans</artifactId>
                <version>2.6.0</version>
                <type>jar</type>
                <overWrite>true</overWrite>
                <outputDirectory>${project.build.directory}/classes</outputDirectory>
                <excludes>**/*test.class</excludes>
            </artifactItem>
        </artifactItems>
    </configuration>
</execution>
</executions>