我正在编写单元测试以比较Jar证书的签名。我一直在关注如何提供JarFile的文件路径:截至目前,它似乎正在返回某种哈希名称。
String[] jarClasses2 = dir2.list()
for (int i = 0; i < jarClasses2.length; i++) {
String jarName = jarClasses2[i]
String filePath="pos/lib2/"+jarName
JarFile jarFile1=new JarFile(filePath)
JarFile jarFile = new JarFile(filePath)
Certificate cert = entry.getCertificates()
JarEntry entry=jarFile.entries()
assertNotNull(cert)
}
我的文件路径正确,但是当我打印jarFile的名称时,它是:“ java.util.jar.JarFile@1e66f1f5”。尝试将jar文件转换为JarEntry时,我还会收到一个异常:
* org.codehaus.groovy.runtime.type.handling.GroovyCastException:无法将类'java.util.jar.JarFile $ JarEntryIterator'的对象'java.util.jar.JarFile$JarEntryIterator@7530ad9c'转换为类'java.util.jar .JarEntry'
关于如何获取罐子位置并将其正确投射的任何建议?
最佳答案
您看到强制转换异常的原因是.entries()
返回
Enumeration <JarEntry>
不只是一个
JarEntry
。所以,而不是 JarEntry entry=jarFile.entries()
您将需要以下内容:
Enumeration<JarEntry> entries=jarFile.entries()
while(entries.hasMoreElements()) {
JarEntry entry = entries.nextElement()
Certificate[] certificates = entry.getCertificates()
// process certificates in this jar entry
}
(请参见JarFile#entries()和JarEntry#getCertificates())。