অ্যান্ড্রয়েড java.lang.VerifError?


100

আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে, আমি সর্বদা ভেরিফেরিটারগুলি পাই এবং আমি বুঝতে পারি না কেন। আমি যখনই কোনও বাহ্যিক জেআর অন্তর্ভুক্ত করি, যখনই আমি আমার অ্যাপ্লিকেশনটি চালু করার চেষ্টা করি না কেন আমি সর্বদা যাচাই করে থাকি (একবারে বাদে যখন আমি অ্যাপাচি লগ 4 জে অন্তর্ভুক্ত ছিলাম))

আমি সাধারণত গ্রন্থাগারের উত্সটি গ্রহণ করে এবং এটি আমার প্রকল্পে যুক্ত করে ঘুরে দেখি তবে আমি জিডিটা ক্লায়েন্ট লাইব্রেরি রাখার চেষ্টা করছি ।

আমি এটি উত্সটিতে পেতে পারি তবে এটি নির্ভরতা (মেইল.জার, অ্যাক্টিভেশন.জার, সার্লেট-এপি.আইজার) আমি পারি না, তাই আমি ত্রুটিগুলি যাচাই করি get আমি একবার এবং সর্বদা এই সমস্যার মূলে যেতে চাই। আমি ইন্টারনেটে তাকিয়েছি, তবে তারা কি অসম্পূর্ণ ক্লাস ফাইলগুলির বিষয়ে কথা বলে মনে হচ্ছে? যা আমি জানি না।


জিডিটা অ্যান্ড্রয়েডে কাজ না করার জন্য পরিচিত। অ্যান্ড্রয়েড-বিকাশকারী গুগল গ্রুপে বিষয়টির জন্য অনুসন্ধান করুন। ভবিষ্যতের এসডিকে রিলিজে আমাদের অ্যান্ড্রয়েডের জন্য অফিসিয়াল জিডিটা অপেক্ষা করতে হবে।
এমপারাজ

1
আপনি কি আপনার প্রকল্পটি তৈরি করতে গ্র্যাডল ব্যবহার করছেন? আমি এই সমস্যাটি তখনই করেছি যখন আমি একত্রিত হওয়ার আগে ক্লিন টাস্কটি চালাতে ভুলে গিয়েছিলাম
রিলেজ

উত্তর:


35

অ্যান্ড্রয়েড একটি পৃথক শ্রেণীর ফাইল ফর্ম্যাট ব্যবহার করে। আপনি কি "ডিএক্স" সরঞ্জামের মাধ্যমে তৃতীয় পক্ষের জেআর ফাইলগুলি চালাচ্ছেন যা অ্যান্ড্রয়েড এসডিকে দিয়ে জাহাজী করে?


4
"Dx" সরঞ্জামে আরও কিছু তথ্যের সাথে দুর্দান্ত হবে।
ড্যানিয়েল ম্যাগনসন

2
এসডিকে সংস্করণগুলির তালিকার নীচে, Android প্রকল্পের পছন্দগুলির "লাইব্রেরি" বিভাগটি দেখুন in আপনার বিল্ড শোতে আপনি যে বাইরের প্রকল্পগুলির উপর নির্ভর করছেন তার পাশেই একটি সবুজ রঙের টিক আছে?
অ্যাডাম

@ অ্যাডাম আপনাকে এই মন্তব্যের জন্য ধন্যবাদ! আপনি কেবল একটি সমস্যার সমাধান করেছেন আমি বের করার চেষ্টা করতে অনেক সময় ব্যয় করেছি।
সাইমন ফোরসবার্গ

118

লগগ্যাট দেখুন এবং যাচাইকরণের কারণ কি তা দেখুন। এটি সম্ভবত জাভা.এলং ক্লাসে এমন কিছু পদ্ধতি যা আপনি ব্যবহার করছেন এমন অ্যান্ড্রয়েড এসডিকে স্তরে সমর্থিত নয় (উদাহরণস্বরূপ, স্ট্রিং.আইএসপিটি ())।


4
এটি বাস্তব উত্তর হিসাবে চিহ্নিত করা উচিত। কমপক্ষে আমার ক্ষেত্রে ঠিক কী ছিল তা থেকে যেহেতু আমি আমার ব্যবহারকারীদের থেকে বিক্ষিপ্ত ত্রুটি পেয়েছি এবং আমি এটিকে এপিআই
বোস্টনের

1
একমত। আমি কয়েকবার এটির মুখোমুখি হয়েছি এবং প্রতিবারই আমি 2.x টার্গেট করছি এবং 1.5-তে নেই এমন কিছু ব্যবহার করছি। যখন আপনাকে প্রথমবারের জন্য ক্লাসটি তৈরি করা / ব্যবহার করা হয় তখন তা ফেলে দেওয়া হয়, তাই যদি এটি এমন কিছু হয় যা বিক্ষিপ্তভাবে ঘটে থাকে তবে আপনি সম্ভবত এটি কিছুক্ষণ লক্ষ্য করবেন না।
এমবাফোর্ড

1
যদি এটি হয় তবে আপনার এই লিঙ্কগুলি চেকআউট করা উচিত: বিকাশকারী.অ্যান্ড্রয়েড / রিসোর্স
আর্টিকেল

"এটি আসল উত্তর হিসাবে চিহ্নিত করা উচিত।" আমি এই থ্রেডটি পেরিয়ে এসেছি কারণ আমার একই সমস্যা। আমি আসল উত্তর হিসাবে চিহ্নিত না হওয়ার কারণটি অনুমান করছি কারণ লগগেট যেখানে আমি একটি লাইব্রেরির উদাহরণ দিচ্ছি সেখানে সমস্যা তৈরি হয়েছে এমন লাইনটি নয় তবে একটি লাইন রেফারেন্স দেয়। অন্য কথায়, এই ক্ষেত্রে লোগগ্যাট অকেজো কাছাকাছি।
নটাকলেভারম্যান

ওয়ার ওয়ার্ল্ড স্তরে লগক্যাটটি আপনাকে কেন এটি যাচাই করতে ব্যর্থ হয়েছে তার বিশদটি দেখায়
মাইমায়ার

56

থেকে অ্যান্ড্রয়েড-ডেভেলপারদের :

"অ্যাডবি লগক্যাট" থেকে আউটপুটটি এমন শ্রেণি নির্দেশ করে যা খুঁজে পাওয়া যায়নি এবং সেই সাথে খারাপ রেফারেন্স রয়েছে এমন শ্রেণিটিও রয়েছে। নির্দিষ্ট দলভিক নির্দেশের দ্বারা অবস্থানটি চিহ্নিত করা হয়েছে। কৌশলটি ব্যতিক্রমের উপরে থাকা লগগুলিতে সন্ধান করা।


6
ব্যতিক্রমের উপরে নজর দেওয়া আমাকেও সেই পদ্ধতিটি সনাক্ত করতে সহায়তা করেছিল যা ত্রুটির কারণ হয়েছিল। আমার জন্য, এটা অভিব্যক্তি Build.VERSION.SDK_INT> = Build.VERSION_CODES.ECLAIR যা ধরণ সুস্পষ্ট, শেষ পর্যন্ত, যদি তুমি চেষ্টা কর যে Cupcake উপর ... ছিল
ম্যানুয়েল

2
ধন্যবাদ! এই সমস্যাটি আমিই পেয়েছিলাম ... দরকারী লগগুলি ব্যতিক্রমের ঠিক উপরে ছিল: WARN/dalvikvm(1052): VFY: unable to resolve static method 475: Ljavax/xml/datatype/DatatypeFactory;.newInstance ()Ljavax/xml/datatype/DatatypeFactory;(এখন
ডেটাটাইপ ফ্যাক্টরি

ত্রুটিটির উপরে তাকানো আমাকেও সহায়তা করেছিল helped "ভিএফওয়াই:" দিয়ে শুরু হওয়া কোনও বার্তা সন্ধান করুন, "আমার ক্ষেত্রে এটি" ইচ্ছামত বৃহত পদ্ধতিটি প্রত্যাখ্যান করে "বলেছিল। সম্ভবত কারণ এটি বিপুল সংখ্যক অ্যারে তৈরি করে :) যাইহোক, টিপটির জন্য ধন্যবাদ!
এমপ্ল্লিফাইটি91

ধন্যবাদ! আমি দেখতে পেয়েছি যে আমার সমস্যাটি ব্যতিক্রম হ্যান্ডলারটিতে ছিল: নেটওয়ার্কঅনমেনথ্রেডএক্সেপশন অ্যান্ড্রয়েড ২.৩ এ প্রয়োগ করা হয়নি। আমার উত্তরের জন্য নিচে তাকান। আবার ধন্যবাদ! :)
সেরফিমের

ধন্যবাদ! আমার ক্ষেত্রে, আমি অ্যান্ড্রয়েড 2.3 লক্ষ্য করেছিলাম এবং আমি অ্যান্ড্রয়েড-সাপোর্ট-ভি 4.জার ব্যবহার করছিলাম এবং এটি এই জারে ক্লাসগুলি খুঁজে পাচ্ছিল না। আমি বৈশিষ্ট্যগুলিতে এই শ্রেণীর জন্য "এক্সপোর্ট" ট্যাবে ক্লিক করতে হয়েছিল এবং এটিকে Android 2.3.3 লাইব্রেরির উপরে আনতে হয়েছিল। ঠিক আছে, এই
রফতানিটি

14

এটি কাজ করতে আপনার উত্স ফোল্ডারের মধ্যে একটিতে লাইব্রেরির জারের যোগ করা প্রয়োজন (আপনি ইতিমধ্যে এটি গ্রহগ্রন্থাগার হিসাবে যুক্ত করেছেন, তবুও আপনাকে এটি উত্স হিসাবে যুক্ত করতে হবে)।

  1. আপনার প্রকল্পে একটি ডিরেক্টরি তৈরি করুন (প্রাক্তন "libs") এবং সেখানে লাইব্রেরি জার রাখুন।
  2. দ্বারা বিল্ড বর্গের পথে ডিরেক্টরিটি যুক্ত করুন (ফোল্ডারের ডান বোতামটি ক্লিক করুন এবং "নির্মাণের পথ" -> "উত্স ফোল্ডার হিসাবে ব্যবহার করুন" নির্বাচন করুন)।
  3. আপনার প্রকল্পটি পুনর্নির্মাণ করুন।

আমরা কি 'লিবস' ফোল্ডারে জারের পরিবর্তে একটি "প্রকল্প লাইব্রেরি" যুক্ত করতে পারি?
আহমেদ

অদ্ভুত ... আমাকে এটিকে একটি সাধারণ জাভা লাইব্রেরি হিসাবে যুক্ত করতে হয়েছিল - Eclipse এ "অ্যান্ড্রয়েড" মেনুতে লাইব্রেরি হিসাবে নয়।
ফিল

ধন্যবাদ মাকসিম, চমৎকার সমাধান।
অরুণ বদোলে

8

আমার সাথে এখনই তা ঘটেছে। ত্রুটিটি ঘটেছিল কারণ আমি আমার ডিভাইসটিতে থাকা একটি নতুন এসডিকে থেকে পদ্ধতিগুলি ব্যবহার করছিলাম।

Android 1.5 ডিভাইস এটি ব্যবহার করে একটি APK ইনস্টল করেছে:

<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"/>

8

আমি একটি আকর্ষণীয় কেস পেয়েছি। আমি ব্যবহার করি:

<uses-sdk
   android:minSdkVersion="9"
   android:targetSdkVersion="18" />

সুতরাং নতুন কিছু অ্যান্ড্রয়েড 4 ক্ষমতা অ্যান্ড্রয়েড ২.৩ এর মতো প্রসারিত নয় ImageView.setLayerType। রানটাইম ত্রুটি সহজভাবে এড়াতে:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
   setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

ব্যতিক্রম হ্যান্ডলিংয়ের সাথেও এই পদ্ধতির ব্যবহার করা উচিত:

} catch (NetworkOnMainThreadException nomte) {
   // log this exception
} catch (SocketTimeoutException socketTimeoutException) {
   // log this exception
}

NetworkOnMainThreadExceptionঅ্যান্ড্রয়েড ২.৩ এ প্রয়োগ করা হয়নি তাই ক্লাসটি লোড হয়ে গেলে (এবং এর আগে নয়!) ব্যতিক্রম java.lang.VerifyErrorঘটে।


1
আমার ক্ষেত্রেও একই ঘটনা ঘটেছিল। আমি এটি ব্যবহার করেছি java.lang.ReflectiveOperationExceptionযা পুরানো অ্যান্ড্রয়েড সংস্করণগুলিতে অন্তর্ভুক্ত নেই (উদাহরণস্বরূপ 4.2), তবে লিন্ট আমাকে এ সম্পর্কে সতর্ক করেনি ...
ওয়ান্ডারস্যাবাসো

আমার জন্য সমস্যাটি হ'ল আমার কোড এ ডিক্লেয়ার CameraAccessException, যা অ্যান্ড্রয়েড 5.0 এ প্রবর্তিত হয়েছিল, কিন্তু যখন আমি অ্যান্ড্রয়েড 4.3 ডিভাইসে চালিত করি তখন ভেরিফেরার ফেলে দেওয়া হয়।
পিয়াসি

7

আপনি যদি রেট্রোলম্বদা ব্যবহার করছেন তবে আপনি কোনও ইন্টারফেসে একটি স্থির পদ্ধতি যুক্ত করতে পারেন (যা কেবল জাভা 8 এ অনুমোদিত)।


7

ললিপপগুলিতে নীচের সংস্করণগুলিতে রেফারেন্সিং সীমা ত্রুটির কারণে এটিও ঘটতে পারে, যেখানে এটি সর্বাধিক 65 কে আকারের মধ্যে সীমাবদ্ধ

উপরের ইস্যুটির সম্ভাব্য সমাধান

ধাপ 1: Add android-support-multidex.jar to your project. The jar can be found in your Android SDK folder /sdk/extras/android/support/multidex/library/libs

পদক্ষেপ 2: উদাহরণস্বরূপ, মাল্টিডেক্স অ্যাপ্লিকেশন সহ আপনার অ্যাপ্লিকেশনটি প্রসারিত করুন

public class MyApplication extends MultiDexApplication

স্টিপি 3: সংযুক্তিবেস কনটেক্সটকে ওভাররাইড করুন

protected void attachBaseContext(Context base) {
 super.attachBaseContext(base);
 MultiDex.install(this);
}

পদক্ষেপ:: পরবর্তী পদক্ষেপটি আপনার অ্যাপ্লিকেশন বিল্ড.gradle এর অ্যান্ড্রয়েড অংশে নিম্নলিখিতটি যুক্ত করা হয়

 dexOptions {
      preDexLibraries = false
   }

পদক্ষেপ 5: অবশেষে, আপনার অ্যাপ্লিকেশন বিল্ড অ্যাড্রেডেলের সাধারণ অংশ অনুসরণ করে

afterEvaluate {
   tasks.matching {
      it.name.startsWith('dex')
   }.each { dx ->
      if (dx.additionalParameters == null) {
         dx.additionalParameters = ['--multi-dex']
      } else {
         dx.additionalParameters += '--multi-dex'
      }
   }
}

বিশদ জন্য, চেকআউট করুন

https://developer.android.com/tools/building/multidex.html


আমার জন্য কাজ করেছেন !! অ্যাপ্লিকেশন ক্লাসটি "মাল্টিডেক্সএক্সপ্লিকেশন" এ পরিবর্তন করতে ভুলবেন না।
গণেশ

আপনি আমাকে বড় সময়ের মানুষকে বাঁচিয়েছেন। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
রোহিত রোকদে

3

আমার ক্ষেত্রে, আমি যখন এ্যালিপস ইন্ডিগো থেকে এক্লিপস জুনোতে আপডেট করেছিলাম তখন: আসল কারণটি সম্পর্কে আমি নিশ্চিত নই, তবে, আমার এই অ্যান্ড্রয়েড প্রকল্পটি যে ব্যতিক্রম দীর্ঘদিন ধরে কাজ করছি সেই ব্যতিক্রমের কারণে কাজ বন্ধ করে দিয়েছে।

এটি ঠিক করার চেষ্টা করার অনেক ঘন্টা পরে , আমি আমার জন্য সমাধানটি খুঁজে পেয়েছি।

আমার অ্যান্ড্রয়েড প্রকল্পে, আমি একই প্রকল্পে থাকা অন্যান্য প্রকল্প ("মাইইটিলস" বলি) ব্যবহার করি। সুতরাং, আমার নিম্নলিখিতগুলি করা দরকার:

অ্যান্ড্রয়েড প্রকল্পে -> বিল্ড পাথ -> বিল্ড পাথটি কনফিগার করুন এ ডান ক্লিক করুন

এখন, "অর্ডার এবং রফতানি" ট্যাবে যান এবং "মাই ইউটিলস" পরীক্ষা করে দেখুন। এটাই: আমি এই বিরক্তিকর ব্যতিক্রম থেকে মুক্তি পেয়েছি।


এটাই আমার জন্য এটি স্থির করে দিয়েছে ... আমাদের একটি বিশাল প্রকল্প রয়েছে তাই আমি ঘুরে দেখলাম এবং সমস্ত কিছুতে "এক্সপোর্ট" পতাকাটি পরীক্ষা করেছিলাম। পিটা ইস্যু।
কেউ আবার কোথাও

3

আমি গ্রেডেল সংস্করণটি 2.0.0-alpha2 থেকে 1.5.0 এ ডাউনগ্রেড করে যা এই সমস্যার সমাধান করেছে।


2

সমস্যাটি দুটি অ্যান্ড্রয়েড প্রকল্পের মধ্যে একটি অমিলের কারণেও হতে পারে। উদাহরণস্বরূপ, যদি আপনি "com.yourcompany" প্যাকেজটি ব্যবহার করে অ্যান্ড্রয়েড লাইব্রেরি তৈরি করেন, তবে আপনার কাছে বেস প্যাকেজের মতো একই প্যাকেজটি ব্যবহার করে মূল অ্যাপ্লিকেশনটির প্রকল্প রয়েছে। তারপরে বলুন যে আপনি আপনার মূল অ্যাপ্লিকেশনটির সংস্করণ পরিবর্তন করতে চান, সুতরাং আপনি ম্যানিফেস্ট ফাইলের মান: সংস্করণ কোড এবং সংস্করণ নাম পরিবর্তন করুন। আপনি যদি লাইব্রেরির জন্য এই মানগুলি পরিবর্তন না করে আপনার অ্যাপ্লিকেশনটি চালনা করেন তবে আপনি লাইব্রেরি থেকে কোনও অবজেক্টে কোনও পদ্ধতির কল এলে একটি যাচাইয়ের ত্রুটি পাবেন।


2

আমারো একই ইস্যু ছিল. আমি ২.১ আর ১ নিয়ে বিল্ডিং করছিলাম এবং নতুন এডটি ১ 17 দিয়ে ২.১ আর ৩ এ আপডেট হয়েছি। জাভামাইলের মেইল.জারে আমার ত্রুটিগুলি যাচাই হয়েছে এবং এটি আমাকে পাগল করে দিচ্ছে। এখানে আমি কীভাবে সমস্যাটি সমাধান করেছি:

  1. একটি libs / ফোল্ডার তৈরি করে এবং জারগুলি যুক্ত করে।
  2. ডান ক্লিক করুন> উত্স ফোল্ডার হিসাবে যুক্ত করুন

আমি পুনর্নির্মাণের চেষ্টা করেছি এবং এটি ব্যর্থ হয়েছিল। আমি libs / ডিরেক্টরিটিকে উত্স ফোল্ডার হিসাবে সরিয়েছি এবং বিল্ড পাথের 3 জার ফাইলের রেফগুলি সরিয়েছি। তারপরে আমি আবার libs / ফোল্ডার যুক্ত করেছি, এবং প্রতিটি জারগুলি libs / ফোল্ডারে বিল্ড পাথে যুক্ত করেছি। এখন এটি প্রত্যাশার মতো কাজ করে। এটি একটি অদ্ভুত কাজ কিন্তু এটি আমার পক্ষে কাজ করেছিল।


2

ইন Eclipse 4.x, যদি আপনি এই সমস্যার মুখোমুখি হন তবে নীচে চেষ্টা করুন:

  1. সমস্ত অন্তর্ভুক্ত 3 তম পক্ষের জারগুলি ব্যবহারকারী-লিবারে স্থানান্তর করুন
  2. অ্যান্ড্রয়েড লাইবের আগে ব্যবহারকারীর লাইবটিকে সরিয়ে নিন এবং এটি অর্ডার এবং এক্সপোর্ট ট্যাবে চেক করুন
  3. চালানোর জন্য পরিষ্কার এবং পুনর্নির্মাণ

2

এসডিকে আপডেটের পরে আমার এই সমস্যাটি রয়েছে। আমার বাইরের লাইব্রেরিতে সংকলকটির সমস্যা ছিল। আমি এটি করেছি: প্রোজেক্টটিতে ডান ক্লিক করুন, তারপরে "অ্যান্ড্রয়েড সরঞ্জামগুলি> সুপোর্ট লাইব্রেরি যুক্ত করুন ..." আমার প্রকল্পের লাইব্রেরিতে এটি ইনস্টল করুন "android-support-v4.jar"।


2

java.lang.VerifyErrorএর অর্থ আপনার সংকলিত বাইটকোড এমন কোনও কিছুকে নির্দেশ করছে যা অ্যান্ড্রয়েড রানটাইমের সময় খুঁজে পায় না। এই যাচাইকরণটি আমাকে কেবলমাত্র Kitkat4.4 ইস্যু করে এবং এর চেয়ে কম সংস্করণেও দেয় না যে এমনকি আমি উভয় ডিভাইসে একই বিল্ড চালিয়েছি । আমি যখন পুরানো সংস্করণটির জ্যাকসন জসন পার্সার ব্যবহার করি এটি দেখায়java.lang.VerifyError

compile 'com.fasterxml.jackson.core:jackson-databind:2.2.+'
compile 'com.fasterxml.jackson.core:jackson-core:2.2.+'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.+'

তারপরে আমি মূল লাইব্রেরি ছাড়াই সর্বনিম্নতম সংস্করণটি ২.২ থেকে ২. changed এ পরিবর্তন করেছি (যখন আমি কোর ২. include অন্তর্ভুক্ত করি এটি যাচাইকরণটি দেয়) তবে এটি কার্যকর হয়। যার অর্থ মেথডস এবং কোরের অন্যান্য সামগ্রীগুলি ডেটাবাইন্ড 2.7 এর সর্বশেষতম সংস্করণে স্থানান্তরিত হয়েছে । এটি আমার সমস্যাগুলি ঠিক করে।

compile 'com.fasterxml.jackson.core:jackson-annotations:2.7.0-rc3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.0-rc3'

1

আমি ভার্ফিয়েররও পেয়েছি ... আসল কারণ খুঁজে পাচ্ছি না। এটি কোনও পদ্ধতিতে কোডের নতুন লাইনগুলিকে মোড়কে রাখতে সহায়তা করে (গ্রহন, 'এক্সট্র্যাক্ট পদ্ধতি ...')। সুতরাং আমার ক্ষেত্রে কারণটি একটি অসমর্থিত পদ্ধতি নয়।


1

আমার খুব একই সমস্যা ছিল। আমি অ্যান্ডি এসডিকে 22.3 এ আপডেট করার সময় আমি অ্যাপাচি পিওআই জারগুলি যুক্ত করেছি এবং সমস্যা উপস্থিত হয়েছিল।

আমার অ্যান্ড্রয়েড প্রাইভেট লাইব্রেরি চেক ছিল তাই অ্যান্ড্রয়েড এসডিকে নিয়ে সাধারণ সমস্যা ছিল না। আমি সমস্ত অ্যাপাচি পিওআইয়ের জারগুলি পরীক্ষা করে এক এক করে যুক্ত করেছি। আমি খুঁজে পেয়েছি যে poi-3.9-20121203.jar poi-ooxML-3.9-20121203.jar এর আগে হওয়া উচিত । অন্যথায় এটি কাজ করবে না।


1

আপনার যদি পরীক্ষা করে থাকে তবে আপনার build.gradeফাইল থেকে এই লাইনটি মন্তব্য করার চেষ্টা করুন:

testCoverageEnabled = true

আমার জন্য এটি জাভা 1.7 বৈশিষ্ট্যগুলি বিশেষত স্ট্রিং স্যুইচ স্টেটমেন্ট ব্যবহার করে এমন ক্লাসগুলিতে যাচাইকরণের ব্যতিক্রম ঘটায়।


1

গিট টান দেওয়ার পরেও আমার একই সমস্যা ছিল।

সমাধান: বিল্ড -> ক্লিন প্রকল্প।

আশাকরি এটা সাহায্য করবে.


1
সত্যিই টানতে বা কিছু করতে পারেনি, তবে একটি ক্লিন এটি করেছে, ধন্যবাদ!
আলেকজান্দ্রে জি

1

আমি অন্য একটি মামলা খুঁজে পেয়েছি।

শর্তাবলী:

  • রেট্রোলাম্বদা ব্যবহার করুন (এটি প্রয়োজনীয় কিনা তা নিশ্চিত নন);
  • একটি ইন্টারফেসে একটি স্থির পদ্ধতি তৈরি করুন।

আর ফলাফল তো বুম! যে ইন্টারফেসটি ব্যবহার করে এমন শ্রেণিটি অ্যাক্সেস করার চেষ্টা করার সময় java.lang.VerifyError। অ্যান্ড্রয়েডের মতো দেখায় (আমার ক্ষেত্রে 4.4। *) ইন্টারফেসে স্থির পদ্ধতি পছন্দ করে না। ইন্টারফেস থেকে স্থিতিশীল পদ্ধতি অপসারণ যাচাইকরণের দূরে চলে যায়।


0

আমারও এই সমস্যাটি ছিল, যেমনটি আমার ব্যবহারকারীর লাইব্রেরিতে আমার জার ছিল ...

আমি যেভাবে সমাধান করেছি তা হ'ল এগুলিকে লাইব ফোল্ডারে যুক্ত করা এবং তারপরে এটিকে গ্রহপাদে বিল্ড বৈশিষ্ট্যে যুক্ত করা ...

প্রথমবার আমি এটি করেছিলাম এটি কাজ করে নি, তবে তারপরে আমি সেগুলি সরিয়ে আবার সংযোজন করেছি এবং এটি কাজ শুরু করে ...

কিছুটা আজব! কিন্তু এখন সব সময় কাজ।

শুভকামনা


0

আমি এসডিকে ২.১-এ থাকা অ্যান্ড্রয়েড এপিআই পদ্ধতি / ক্লাস কোড করে রেখেছি এবং এটিকে অ্যান্ড্রয়েড 1.6 এমুলেটরটিতে চালানোর চেষ্টা করছিলাম। সুতরাং আমি যে ত্রুটি পেয়েছিলাম।

সমাধান: এমুলেটর সংস্করণটি সংশোধন করতে এটি পরিবর্তন করা হয়েছে।

এই কাজ আমার জন্য .. ধন্যবাদ।


0

উত্তরসূরীদের জন্য, আমি এই ত্রুটিটি পেয়েছি কারণ আমি ব্যবহার করছি Arrays.copyOf()যা জাভা 1.5 দ্বারা সমর্থিত কোনও পদ্ধতি নয় যা অ্যান্ড্রয়েড স্তর 4 এর সাথে সামঞ্জস্যপূর্ণ Because আমি তখনই সমস্যাগুলি দেখেছি যখন আমি প্রশ্নে ক্লাসটি আমার অ্যান্ড্রয়েড প্রকল্পে স্থানান্তরিত করেছি - তখন ত্রুটিটি হাইলাইট করা হয়েছিল।

Uncaught handler: thread main exiting due to uncaught exception
java.lang.VerifyError: com.j256.ormlite.dao.BaseDaoImpl$DaoConfigArray
  at com.j256.ormlite.dao.BaseDaoImpl$1.initialValue(BaseDaoImpl.java:71)
  at com.j256.ormlite.dao.BaseDaoImpl$1.initialValue(BaseDaoImpl.java:1)
  at java.lang.ThreadLocal$Values.getAfterMiss(ThreadLocal.java:429)
  at java.lang.ThreadLocal.get(ThreadLocal.java:66)

সেই লাইনে আমি একটি করার চেষ্টা করছিলাম new DaoConfigArrayএবং সেই শ্রেণীর নিম্নোক্ত রেখা ছিল:

// copyOf is only supported in Java >= 1.6
doArray = Arrays.copyOf(daoArray, newLength);

যা এটিকে আরও জটিল করে তুলেছিল তা হল line১ লাইনটি একটি ThreadLocalসূচনা নির্দেশকে ইঙ্গিত করছিল যা আমি ভেবেছিলাম প্রাথমিকভাবে সমস্যার কারণ ছিল।

private static final ThreadLocal<DaoConfigArray> daoConfigLevelLocal
    = new ThreadLocal<DaoConfigArray>() {
    @Override
    protected DaoConfigArray initialValue() {
        return new DaoConfigArray();
    }
};

0

আমাকে নির্ভরশীল প্রকল্পগুলি সরিয়ে ফেলতে হয়েছিল এবং এর পরিবর্তে নির্ভরশীল প্রকল্পগুলি জারগুলির সংকলন করতে হয়েছিল এবং সেগুলি libs ফোল্ডারে অন্তর্ভুক্ত করা হয়েছিল।


0

আমি নিশ্চিত যে আমার কারণটি আপনার চেয়ে আলাদা ছিল, তবে "অ্যান্ড্রয়েড জাভা.লং.ভেরিফেরিয়ার" অনুসন্ধান করার সময় এটি শীর্ষ হিটগুলির মধ্যে একটি, তাই আমি ভেবেছিলাম যে এটি এখানে পরবর্তীকালের জন্য রেকর্ড করব।

এর লাইনে আমার কয়েকটি ক্লাস ছিল:

public class A { ... }
public class B extends A { ... }
public class C extends A { ... }

এবং একটি পদ্ধতি যা করেছে:

A[] result = null;
if (something)
    result = new B[cursor.getCount()];
else
    result = new C[cursor.getCount()];

// Fill result
...

এই কোডটি ফাইলটিতে উপস্থিত থাকা অবধি, আমি এই পদ্ধতিযুক্ত শ্রেণিটি প্রথমবার লোড হওয়ার পরে প্রথমবারের মতো একটি ভেরিফাইর পেতে পারি। এটিকে দুটি পৃথক পদ্ধতিতে বিভক্ত করা (একমাত্র কেবল বি এর সাথে সম্পর্কিত এবং একটি কেবলমাত্র সি এর সাথে সম্পর্কিত) সমস্যার সমাধান করে।


1
এবং, যাইহোক, আমি যেভাবে এটির মূল কারণ হয়েছি তা ভেরিফেরার চলে না যাওয়া অবধি পদ্ধতি সংস্থাগুলির (রিটার্ন নাল / 0 / মিথ্যা দ্বারা প্রতিস্থাপন) মন্তব্য করা ছিল, তারপরে আবার ফিরে না আসা পর্যন্ত জিনিস পুনরুদ্ধার করা; তারপরে সমস্যা পদ্ধতিতে একই কাজ করা। ডিবাগ করার কোনও মজাদার উপায় নয়, তবে এটি কার্যকর।
বেনকসি

0

আমার ক্ষেত্রে, এই ত্রুটিটি দেখা দেয় কারণ আমার গুগল-প্লে-পরিষেবাটি নতুন নয়

যদি আপনার প্রকল্পটি .jar তে কিছু শ্রেণিকে সমর্থন না করে তবে এই ত্রুটিটি দেখা দেয় (উদাঃ চিত্রভিউ.সেটলায়ারটাইপ, বিজ্ঞাপনআইডক্লিয়েন্ট ইত্যাদি)।


0

আমি কেবলমাত্র অন্য একটি পরিস্থিতি সনাক্ত করেছি যা এটি ঘটে থাকে, কেবলমাত্র ডাবন 'ইড নয় লিবের কারণে । আমার খুব দীর্ঘ ডো আইইনব্যাকগ্রাউন্ড মেহটোড সহ অ্যাসিঙ্কটাস্ক রয়েছে। কোনও কারণে 145 টিরও বেশি লাইন সহ এই পদ্ধতিটি ভাঙ্গতে শুরু করে। এটি একটি 2.3 অ্যাপে ঘটেছে। আমি যখন কিছু অংশগুলিকে পদ্ধতিগুলিতে সজ্জিত করেছি, এটি দুর্দান্ত কাজ করেছে।

সুতরাং যারা সঠিকভাবে dx 'এড ছিল না এমন শ্রেণীর সন্ধান করতে পারেন না , আপনার পদ্ধতির দৈর্ঘ্য হ্রাস করার চেষ্টা করুন।


0

আমার জন্য, বিষয়টি আসলে শেষ হয়েছে যে আমি ক্লাসে কোথাও একটি জাভা 7 বৈশিষ্ট্য (এবং API 19+) মাল্টি-ক্যাচ ক্লজ ব্যবহার করছিলাম। সুতরাং এটি VerifyErrorসমস্ত প্রাক -19 ডিভাইসে ক্রাশ হবে।


0

আমার জন্য এটি কম্পাইলএসডকভিশন এবং বিল্ডটুলস ভার্সনের মধ্যে সম্পর্ক ছিল। আমার ছিল:

compileSdkVersion 21
buildToolsVersion '19.1.0'

আমি এটিকে পরিবর্তন করেছি:

compileSdkVersion 21
buildToolsVersion '21.1.2'

0

আমার জন্য এটি কম্পাইলএসডেক ভার্সনের সমস্যা। আমি যখন নির্দিষ্ট অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে https://github.com/android10/Android-AOPExample ) এ API স্তরটি 21 ব্যবহার করি :

compileSdkVersion 21

java.lang.veriferror ঘটেছে। তাই আমি কম্পাইল এসডিকে ভার্সন 19 এ পরিবর্তন করেছি

compileSdkVersion 19

এটা ভাল কাজ করে। আমি মনে করি এটি এসডিকে বিল্ডটুলগুলির সমস্যা হতে পারে এবং এপিআই স্তর <21 যখন ঠিক থাকে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.