2011-07-15 6 views
18

में ढेर नक्शा फ्रेम उम्मीद मैं ट्यूटोरियल प्ले ढांचे को शुरू करने का पालन किया है, लेकिन यह मुझे एक त्रुटि देता है:

Execution exception VerifyError occured : Expecting a stack map frame in method controllers.Secure$Security.authentify(Ljava/lang/String;Ljava/lang/String;)Z at offset 33

मुझे यकीन है कि क्या मैं गलत किया था नहीं हूँ। कोड मैं (स्निपेट) का उपयोग कर रहा:

package controllers; 

.. 

@With(Secure.class) 
public class Application extends Controller 
{ 
    @Before 
    public static void setConnectedUser() 
    { 
     if (Security.isConnected()) 
     { 
      User user = User.find("byEmail", Security.connected()).first(); 
      user.password = null; 
      renderArgs.put("user", user); 
     } 
    } 

    ... 

सुरक्षा वर्ग के लिए:

package controllers; 

import models.*; 

public class Security extends Secure.Security {  
    static boolean authenticate(String username, String password) { 
     return User.connect(username, password) != null; 
    } 
} 

मैं भी जो प्ले ढांचे पुनरारंभ करने के बाद सही ढंग से लोड करता है dependencies.yml को सुरक्षित मॉड्यूल जोड़ा। मैंने अपने मार्गों में सुरक्षित मॉडल जोड़ा। ग्रहण कोई त्रुटि नहीं देता है; त्रुटि केवल निष्पादन समय पर होती है। सुरक्षित। सुरक्षा वर्ग में वास्तव में सार्वजनिक स्थैतिक है कनेक्ट की गई विधि उपलब्ध है। मैं प्ले फ्रेमवर्क (1.2.2) के लिए सबसे हालिया संस्करण का उपयोग कर रहा हूं।

+0

मैं प्रमाण-पत्र देख सकता हूं कि Play-Source में @Deprecated है, लेकिन यह सुनिश्चित नहीं है कि इसे कहां कहा गया है, अगर यह अपवाद पैदा कर रहा है? –

+1

फ्रीोन 3000 @ irc.freenode.org # जावा ने सुझाव दिया कि यह इस तथ्य से संबंधित हो सकता है कि मैं जेडीके 1.7 का उपयोग कर रहा हूं; बाइटकोड और सत्यापन के साथ कुछ। क्या यह 'invokedynamic' से संबंधित हो सकता है? –

उत्तर

20

Play के लिए संदेश समूह ने चर्चा की है कि जेडीके 1.7 के साथ कुछ समस्याएं हैं, और यह कि Play आधिकारिक तौर पर इसका समर्थन नहीं करता है। यदि संभव हो, तो कृपया जेडीके 6 के साथ प्रयास करें, और देखें कि क्या आपको अभी भी यह त्रुटि मिलती है या नहीं।

आप JDK7 तक ही सीमित हैं, तो आप विकल्प

java.source=1.6 

अपने application.conf फ़ाइल में उपयोग कर सकते हैं।

अपडेट 18 अगस्त 2011: निकोलस लेरोक्स ने हाल ही में ट्विटर पर एक संदेश भेजा कि यह कहने के लिए कि जावा 7 समर्थन मास्टर शाखा में खेलने के लिए जोड़ा गया था। यह शायद 1.2.3 रिलीज नहीं करेगा, लेकिन इसके बाद रिलीज करेगा।

+1

प्ले 1.2.4 आरसी 3 जावा 7 का समर्थन करता है - https://groups.google.com/forum/#!topic/play-framework/t2TQl3neUBI – ripper234

+1

वास्तव में यह करता है। यह 1.2.3 से चूक गया, लेकिन जैसा कि यह मास्टर में था, यह स्वचालित रूप से 1.2.4 में जोड़ा गया। – Codemwnci

+1

1.7-समर्थन के बारे में घोषणा के विपरीत, यह मामला प्रतीत होता है। न केवल यह मेरे लिए समस्या का समाधान करता है, लेकिन मैंने सिक्योरसामाजिक प्लगइन का उपयोग करने की कोशिश करने में भी एक ही समस्या देखी और 1.7 मुद्दे के बारे में कुछ बात भी देखी (हालांकि मैंने उस बिंदु को ठीक करने की कोशिश नहीं की, इसलिए मैं परिणाम के सकारात्मक नहीं है)। लेकिन मैं प्रमाणित कर सकता हूं कि मैं Play 1.2.4 का उपयोग कर रहा हूं और यह वही त्रुटि देख रहा था और यह इसे ठीक कर दिया। – Bane

15

मुझे वही समस्या थी, यह वास्तव में जेडीके 7 से आती है।

मैं इसे हल करने के लिए, application.conf फ़ाइल में जोड़ने के

java.source=1.6 

, आवेदन बंद करो, अनुप्रयोग के tmp निर्देशिका के अंतर्गत सब कुछ हटा सकते हैं और उसे पुन: प्रारंभ में, यह काम करना चाहिए, भले ही आप JDK है 1.7 स्थापित

यदि आप फ़ाइलों को हटाने नहीं है, खेलने के लिए उन्हें पुन: संयोजित नहीं है और यह काम नहीं करेगा, भले ही आप JDK 1.6

+2

+1/tmp – ripper234

8

के लिए वापस जाओ तुम भी -XX:-UseSplitVerifier ध्वज का उपयोग कर सकते हैं।

+0

यह जावा 1.7 में काम करता है; जावा 1.8 आपको जोड़ना चाहिए- वीएम विकल्प – Marks

4

जब मैं अपना प्ले एप्लिकेशन चलाता हूं तो मुझे वही समस्या थी। मैं खेलने 1.2.5 और जावा 1.7

उपयोग कर रहा हूँ मैं सिर्फ application.conf में

java.source=1.6

गयी।

फिर tmp फ़ोल्डर हटा दिया गया और एप्लिकेशन को पुनरारंभ करें और यह काम किया।

-1

यदि आप jdk7 का उपयोग करना चाहते हैं तो यह ठीक है। बस सुनिश्चित करें कि आपका जावा पथ ठीक से कॉन्फ़िगर किया गया है। "जावा-वर्जन" और "जावा-वर्जन" की जांच करें।

उदाहरण पथ:

  • "C: \ Program Files \ जावा \ jdk1.7.0_07 \ बिन" < --- इस
  • "सी कार्य करें: \ Program Files \ जावा \ jdk1.7.0 _07 \ jre \ bin "< --- ऐसा नहीं करें
+0

को सूचित करें समस्या की रिपोर्ट वास्तव में उत्पन्न बाइटकोड से संबंधित है जो जावा 7 की उम्मीद से पूरी तरह से अनुपालन नहीं करती है, न कि जावा बाइनरी जिसे आप ऐप निष्पादित करने के लिए चुनते हैं –

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

  • कोई संबंधित समस्या नहीं^_^