2013-09-25 37 views
2

我檢查了其他線程,但他們的情況和解決方案不適用於我的情況。java.lang.SecurityException:Manifest主要屬性的簽名文件摘要無效

該程序應該創建一個藍牙設備和計算機之間的連接,並應該從該設備接收數據。 因此,我正在使用本身包含清單文件的藍牙連接所需的庫。我猜測,這是問題發生的地方。

我已經嘗試過使用不同的JDK,但沒有成功。

下面是完整的錯誤消息:

Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 
at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:240) 
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:193) 
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:262) 
at java.util.jar.JarVerifier.update(JarVerifier.java:216) 
at java.util.jar.JarFile.initializeVerifier(JarFile.java:345) 
at java.util.jar.JarFile.getInputStream(JarFile.java:412) 
at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:775) 
at sun.misc.Resource.cachedInputStream(Resource.java:77) 
at sun.misc.Resource.getByteBuffer(Resource.java:160) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:436) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:190) 
at com.intel.bluetooth.BlueCoveImpl.loadStackClass(BlueCoveImpl.java:358) 
at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:454) 
at com.intel.bluetooth.BlueCoveImpl.access$500(BlueCoveImpl.java:70) 
at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:1085) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:1083) 
at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:1076) 
at javax.bluetooth.LocalDevice.getLocalDeviceInstance(LocalDevice.java:75) 
at javax.bluetooth.LocalDevice.getLocalDevice(LocalDevice.java:95) 
at de.offis.medical.sensor.discovery.linux.bluetooth.DiscoveryBT.<init>(DiscoveryBT.java:50) 
at Helper.getDiscoveries(Helper.java:27) 
at Main.startSensorDemo(Main.java:31) 
at Main.main(Main.java:46) 
+0

您的項目可能沒有'manifest' ,但是你在你的類路徑中添加的'jars'是你的項目需要的'manifest',並且問題可能出現在依賴的'jars'中。 –

+0

如何描述你試圖實現什麼以及你的場景是怎樣的?只是使用谷歌搜索例外,並指出結果不符合您的問題,並不能幫助我們提供有意義的答案。但即使是堆棧跟蹤也表明您正在使用包含Manifest的jar文件。 – Matthias

+0

你是對的Mathias,我編輯了我的帖子。所以我使用兩個藍牙庫,每個包含清單文件。但我不確定要尋找什麼。 – JustusVL

回答

3

嘗試從罐中取出META-INF文件夾,添加清單,並再次登錄JAR,它幫助我:http://jehy.ru/articles/2013/12/13/invalid-signature-file-digest-for-manifest-main-attributes/

+0

感冒你請提一下你如何簽署一個罐子? – Bionix1441

+0

我使用oracle標誌工具手動簽署了jar文件 - https://docs.oracle.com/javase/tutorial/deployment/jar/signing.html。你也可以用一些IDE的集成工具來做到這一點。 – Jehy

+0

我可以簽署一個與另一個現有jarfile相同的jar文件嗎? – Bionix1441