2013-08-26 8 views
5

मैं डेस्कटॉप पर LibGDX के साथ समस्याओं में भाग ले रहा हूं।असंतुष्ट LinkError Libgdx डेस्कटॉप

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.badlogic.gdx.utils.BufferUtils.newDisposableByteBuffer(I)Ljava/nio/ByteBuffer; 
at com.badlogic.gdx.utils.BufferUtils.newDisposableByteBuffer(Native Method) 
at com.badlogic.gdx.utils.BufferUtils.newUnsafeByteBuffer(BufferUtils.java:288) 
at com.badlogic.gdx.graphics.glutils.VertexArray.<init>(VertexArray.java:62) 
at com.badlogic.gdx.graphics.glutils.VertexArray.<init>(VertexArray.java:53) 
at com.badlogic.gdx.graphics.Mesh.<init>(Mesh.java:148) 
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:173) 
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:142) 
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:121) 
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:115) 

मैं निम्नलिखित पुस्तकालयों अपने प्रोजेक्ट में शामिल किया है:: मैं निम्न त्रुटि जब आवेदन शुरू करने की कोशिश कर आ रही है

  • gdx.jar
  • GDX-sources.jar
  • GDX-natives.jar
  • GDX-बैकएंड-lwjgl.jar
  • GDX-बैकएंड-lwjgl-natives.jar

क्या मुझे कुछ याद आ रही है?

मैंने उच्च और निम्न खोज की है, लेकिन मुझे जो कुछ भी मिलता है वह एंड्रॉइड के लिए है और मुझे अपने प्रोजेक्ट में बांह फ़ोल्डर्स से .so libs जोड़ने के लिए कहता है, लेकिन यह मुझे विंटेल पर डेस्कटॉप प्रोजेक्ट के लिए समझ में नहीं आता है मंच।

+1

यह * क्लास पथ * में होना आवश्यक नहीं है * इसे * लाइब्रेरी पथ * में होना चाहिए, जिसका अर्थ है कि आपको java.library.path सिस्टम प्रॉपर्टी को निर्देशिका के पथ पर अपना मान सेट करके परिभाषित करना होगा। इतनी फाइलें रहती हैं। या तो कमांड लाइन या प्रोग्रामेटिक रूप से, लेकिन फिर यह कोड निष्पादित करने की कोशिश करने से पहले होना चाहिए या [असंतुष्ट लिंक्स त्रुटि फेंक दी गई है] (http://docs.oracle.com/javase/7/docs/api/java/lang/UnsatisfiedLinkError.html)। [Libgdx है] द्वारा निर्णय लेना (https://code.google.com/p/libgdx/) मेरा सुझाव है कि आप @ नोएन के उत्तर से समाधान का प्रयास करें। – linski

उत्तर

15

मैं आपको अपनी परियोजनाओं को this GUI के साथ सेट करने की सलाह दूंगा। यह आपको सभी प्लेटफार्मों के लिए एक वैध सेटअप प्रदान करना चाहिए। आप नवीनतम रात के निर्माण का भी उपयोग कर सकते हैं और जांच सकते हैं कि समस्या अभी भी होती है या नहीं। समस्या यह हो सकती है कि देशी पुस्तकालय अन्य जार से मेल नहीं खाते हैं।

एक और समस्या यह हो सकती है कि आप एक स्प्राइटबैच (या कुछ और जो आंतरिक रूप से स्प्राइटबैच का उपयोग करता है) को तुरंत शुरू करें (स्टैकट्रैक में इस तरह थोड़ा सा देखा)। स्थिर इस तरह उदाहरण के लिए:

private static SpriteBatch batch = new SpriteBatch(); 

यह काम नहीं करेगा, क्योंकि libgdx समय में इस बिंदु पर सही ढंग से सेटअप नहीं था। इसके बजाय, create/show अपने गेम के तरीकों में ऐसी चीजें बनाएं।

+8

मुझे यकीन है कि यह दूसरा जवाब है (लिबडक्स प्रारंभ होने से पहले स्प्राइटबैच कन्स्ट्रक्टर को बुलाया जा रहा है)। –

+0

उत्तरार्द्ध मामला था। धन्यवाद! – jonbonazza

+0

मैंने अपनी गेम ऑब्जेक्ट की #create विधि के बजाय, मेरी गेम ऑब्जेक्ट के निर्माता में एक स्क्रीन सेट करके यह गलती की है। दूसरा जवाब इस संबंध में समझ में आता है। – Moz