2017-07-19 8 views
5

के लिए गायब पचाना, मेरा जावा वेब प्रारंभ अनुप्रयोग, जेएनएलपी द्वारा संचालित काम करना बंद कर दिया। आवेदन डाउनलोड न करें। और नीचे इन अपवाद फेंकता है। क्या कोई मेरी मदत कर सकता है?जावा वेब प्रारंभ जावा 8u141 - java.lang.SecurityException अद्यतन करने के बाद काम नहीं कर रहा है: जावा 8u141 अद्यतन करने के बाद ओआरजी/अपाचे/कॉमन्स/httpclient

com.sun.deploy.net.JARSigningException: Could not verify resource signature: http://www.example.com/myjar.jar 
at com.sun.deploy.security.JarVerifier.authenticateJarEntry(Unknown Source) 
at com.sun.deploy.security.EnhancedJarVerifier.validate(Unknown Source) 
at com.sun.deploy.cache.CacheEntry.processJar(Unknown Source) 
at com.sun.deploy.cache.CacheEntry.access$2700(Unknown Source) 
at com.sun.deploy.cache.CacheEntry$7.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.deploy.cache.CacheEntry.writeFileToDisk(Unknown Source) 
at com.sun.deploy.cache.CacheEntry.writeFileToDisk(Unknown Source) 
at com.sun.deploy.cache.Cache.downloadResourceToTempFile(Unknown Source) 
at com.sun.deploy.cache.Cache.downloadResourceToCache(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source) 
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source) 
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source) 
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

अन्य:

java.lang.SecurityException: digest missing for org/apache/commons/httpclient 
at sun.security.util.ManifestEntryVerifier.verify(Unknown Source) 
at java.util.jar.JarVerifier.processEntry(Unknown Source) 
at java.util.jar.JarVerifier.update(Unknown Source) 
at java.util.jar.JarVerifier$VerifierStream.<init>(Unknown Source) 
at java.util.jar.JarFile.getInputStream(Unknown Source) 
at com.sun.deploy.security.JarVerifier.authenticateJarEntry(Unknown Source) 
at com.sun.deploy.security.EnhancedJarVerifier.validate(Unknown Source) 
at com.sun.deploy.cache.CacheEntry.processJar(Unknown Source) 
at com.sun.deploy.cache.CacheEntry.access$2700(Unknown Source) 
at com.sun.deploy.cache.CacheEntry$7.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.deploy.cache.CacheEntry.writeFileToDisk(Unknown Source) 
at com.sun.deploy.cache.CacheEntry.writeFileToDisk(Unknown Source) 
at com.sun.deploy.cache.Cache.downloadResourceToTempFile(Unknown Source) 
at com.sun.deploy.cache.Cache.downloadResourceToCache(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source) 
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source) 
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source) 
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

उत्तर

5

मैं कल इसी मुद्दे को हल करने में कामयाब रहे। यह मेरे लिए काम करता है:

  1. मूल, हस्ताक्षरित जार खोलने के लिए 7-ज़िप का उपयोग करें जो JARSigningException को फेंक रहा है। कुछ भी गलत होने पर पहले जार की प्रतिलिपि बनाना संभवतः एक अच्छा विचार है।
  2. मेटा-आईएनएफ फ़ोल्डर खोलें और अपने पीसी पर कहीं भी MANIFEST.MF कॉपी करें।
  3. एक टेक्स्ट एडिटर में MANIFEST.MF प्रतिलिपि खोलें। एक पंक्ति की तलाश करें जो "नाम: संगठन/अपाचे/कॉमन्स/httpclient" जैसी कुछ कहती है। जार के आधार पर, इस तरह की कुछ पंक्तियां हो सकती हैं। इस पंक्ति के नीचे शायद "कार्यान्वयन-विक्रेता: ...", "विशिष्टता-शीर्षक: ...", आदि जैसी अन्य पंक्तियां होंगी। किसी भी मामले में, सभी "नाम: ..." रेखाएं और बाद की सभी पंक्तियां हटाएं प्रत्येक ब्लॉक में।
  4. फ़ाइल को सहेजें, और संपादित संस्करण के साथ जार में मौजूदा MANIFEST.MF को प्रतिस्थापित करें। 7-ज़िप फ़ाइलों को जारों के अंदर-जगह में बदलने की अनुमति देता है।
  5. जार और तैनाती पर दोबारा हस्ताक्षर करें।

ऐसा लगता है कि जब जार हस्ताक्षर किए जाते हैं, तो मैनिफेस्ट में "नाम:" रेखाएं हस्ताक्षरित कक्षाओं के बीच में उड़ सकती हैं, जो अब जावा 8u141 के रिलीज के साथ एक समस्या है, लेकिन जाहिर है ठीक पहले

+2

आपको बस यह सुनिश्चित करना होगा कि "नाम:" समाप्त होता है/जैसा कि https://docs.oracle.com/javase/tutorial/deployment/jar/packageman.html –

+0

में वर्णित है, धन्यवाद cgull, वास्तव में मेरी गलती का समाधान –

+0

@WillT पैकेज के लिए सच है (कक्षाओं के लिए नहीं)। – mbee

1

मुझे कॉमन्स-httpclient-3.1.jar लाइब्रेरी के साथ एक ही समस्या थी। असल में मेरा मानना ​​है कि यह वेब शुरू में एक बग है, क्योंकि यह पहले काम करता था और यह 8u152 प्रारंभिक पहुंच के साथ काम करता है। समाधान मैंने here का वर्णन किया!

+1

के साथ इस्तीफा देते हैं तो उन्हें हटा दिया जाता है, हालांकि मैं जावा-बग के बारे में सहमत हूं, फिर भी मैंने org.apache.httpcomponents-httpclient- पर अपडेट करने के लिए इस "अवसर" का उपयोग किया .jar जो नया "होस्ट है "इस कोड के (https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient देखें) पुराना 3.1 संस्करण 2007 से है और आगे समर्थित नहीं है ... – Rainer

+0

मैं रेनर से सहमत हूं। जीवन विवरण का अंत यहां दिया गया है: http://hc.apache.org/httpclient-3.x/ मैं httpcomponents के लिए जाता हूं क्योंकि इसमें पाचन होता है। यहां तक ​​कि यदि वर्तमान 3.1 के लिए वर्कअराउंड मौजूद हैं, तो कौन जानता है कि भविष्य में क्या आता है ... –

0

मुद्दे पर हस्ताक्षर किए जार फ़ाइलों जिसका प्रकट में मनाया जाता है पैकेज संस्करण जानकारी [1] में शामिल है और लगने वाला "/" पैकेज के नाम पर नहीं है (उदाहरण के लिए: नाम: ऑर्ग/अपाचे/xml/समाधानकर्ता)। जबकि हम इस मुद्दे को हल करने के लिए काम करते हैं, अंतरिम में, उपयोगकर्ता निम्नानुसार इस मुद्दे के आसपास काम कर सकते हैं:

नोट: हम केवल इस कार्यवाही का उपयोग करने की सलाह देते हैं यदि JAR फाइलों के वितरक JAR को "पुनः हस्ताक्षर" कर सकते हैं फ़ाइलें।

  1. हस्ताक्षरित JAR फ़ाइल (उदा .: jar xf jar-file) की सामग्री निकालें।
  2. मेटा-आईएनएफ/MANIFEST.MF फ़ाइल संशोधित करें और पैकेज के नाम पर एक पीछे "/" जोड़ें (उदा .: नाम: org/apache/xml/resolver /)।
  3. वर्तमान हस्ताक्षर फ़ाइलों को हटाएं (उदा .: आरएम-एफ मेटा-आईएनएफ/.SF मेटा-आईएनएफ/ आरएसए मेटा-आईएनएफ/* डीएसए)।
  4. जेएआर फ़ाइल (ई, जी .: jar cfm jar-file मेटा-आईएनएफ/MANIFEST.MF इनपुट-फ़ाइल (ओं) को मनोरंजन करें।

नोट: आपको जार उपयोगिता का उपयोग करना होगा। अन्य जार निर्माण उपकरण इस मुद्दे को फिर से पेश कर सकते हैं।

  1. जेएआर फ़ाइल को फिर से साइन करें।

[1] https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp91706

स्रोत: http://www.oracle.com/technetwork/java/javase/8u141-relnotes-3720385.html#KnownIssues

0

इस बग बग JDK-8184993 के हिस्से के रूप में संबोधित किया जाता है और ठीक एक बाहर के चक्र JDK की रिहाई में उपलब्ध हो जाएगा 8u144, जिसे 26 जुलाई के बाद के घंटों में रिलीज़ किया जाना है।

संबंधित मुद्दे