আমি NoClassDefFoundError
আমার জাভা অ্যাপ্লিকেশনটি চালানোর সময় আমি একটি পেয়ে যাচ্ছি । সাধারণত এর কারণ কী?
আমি NoClassDefFoundError
আমার জাভা অ্যাপ্লিকেশনটি চালানোর সময় আমি একটি পেয়ে যাচ্ছি । সাধারণত এর কারণ কী?
উত্তর:
এমন কোনও শ্রেণীর ফাইল রয়েছে যা আপনার কোডের উপর নির্ভর করে এবং এটি সংকলন সময়ে উপস্থিত রয়েছে তবে রানটাইমটিতে পাওয়া যায় নি caused আপনার বিল্ড টাইম এবং রানটাইম ক্লাসপাথগুলিতে পার্থক্য সন্ধান করুন।
যদিও এটি সম্ভব যে এটি সংকলন-সময় এবং রান-টাইমের মধ্যে একটি শ্রেণিপথের অমিলের কারণে, এটি অগত্যা সত্য নয়।
এই ক্ষেত্রে দুটি বা তিনটি ভিন্ন ব্যতিক্রম সরাসরি আমাদের মাথায় রাখা গুরুত্বপূর্ণ:
java.lang.ClassNotFoundException
এই ব্যতিক্রম ইঙ্গিত দেয় যে ক্লাসপথে ক্লাসটি পাওয়া যায় নি। এটি ইঙ্গিত করে যে আমরা শ্রেণি সংজ্ঞাটি লোড করার চেষ্টা করছিলাম এবং ক্লাসপাথে ক্লাসটির অস্তিত্ব ছিল না।
java.lang.NoClassDefFoundError
এই ব্যতিক্রমটি ইঙ্গিত করে যে জেভিএম কোনও শ্রেণীর সংজ্ঞার জন্য এটির অভ্যন্তরীণ শ্রেণীর সংজ্ঞা ডেটা কাঠামো দেখেছিল এবং এটি খুঁজে পায়নি। এটি ক্লাসপথ থেকে লোড করা যায়নি এটি বলার চেয়ে আলাদা। সাধারণত এটি ইঙ্গিত করে যে আমরা আগে ক্লাসপথ থেকে কোনও শ্রেণি লোড করার চেষ্টা করেছি, তবে এটি কোনও কারণে ব্যর্থ হয়েছিল - এখন আমরা আবার ক্লাসটি ব্যবহার করার চেষ্টা করছি (এবং এটি শেষ বার ব্যর্থ হওয়ায় এটি লোড করা দরকার) তবে আমরা ' এমনকি এটি লোড করার চেষ্টাও করব না, কারণ আমরা এটি লোড করার আগে ব্যর্থ হয়েছিলাম (এবং যুক্তিসঙ্গতভাবে সন্দেহ করি যে আমরা আবার ব্যর্থ হব)। আগের ব্যর্থতা ClassNotFoundException বা একটি ExceptionInInitializerError (স্ট্যাটিক ইনিশিয়ালাইজেশন ব্লকে ব্যর্থতা নির্দেশ করে) বা অন্যান্য যে কোনও সমস্যা হতে পারে। মুল বক্তব্যটি হ'ল কোনও নোক্লাসডিফফাউন্ডআরার অগত্যা কোনও ক্লাসপথ সমস্যা নয়।
Error: Could not find or load main class
, এটি কোন বিভাগের ত্রুটির অধীনে শ্রেণিবদ্ধ করা হবে?
উদাহরণস্বরূপ কোডটি এখানে java.lang.NoClassDefFoundError
। বিস্তারিত ব্যাখ্যার জন্য দয়া করে জারেডের উত্তর দেখুন ।
NoClassDefFoundErrorDemo.java
public class NoClassDefFoundErrorDemo {
public static void main(String[] args) {
try {
// The following line would throw ExceptionInInitializerError
SimpleCalculator calculator1 = new SimpleCalculator();
} catch (Throwable t) {
System.out.println(t);
}
// The following line would cause NoClassDefFoundError
SimpleCalculator calculator2 = new SimpleCalculator();
}
}
SimpleCalculator.java
public class SimpleCalculator {
static int undefined = 1 / 0;
}
SimpleCalculator
শূন্য দ্বারা বিভাজনের পরে ব্যর্থ শ্রেণীর সূচনা শুরু করে দিয়েছে? কারও কি এই আচরণের জন্য অফিসিয়াল ডকুমেন্টেশনের একটি উল্লেখ রয়েছে?
new SimpleCalculator()
বলা হয়, আপনি অ্যারিমেটিকএক্সসেপশনজনিত কারণে একটি এক্সসেপশনআইনিআইটিয়ালাইজার পাবেন। দ্বিতীয়বার যখন আপনি কল new SimpleCalculator()
করবেন তখন কোনও নোক্লাসডিফফাউন্ডআরার অন্য কোনওর মতো খাঁটি পাবেন। মুল বক্তব্যটি হ'ল আপনি NoClassDefFoundError কোনও কারণে সিম্পলক্যালকুলেটর.ক্লাস রানটাইমে ক্লাসপথে না থাকা ছাড়া পেতে পারেন।
জাভাতে NoClassDefFoundError
সংজ্ঞা:
জাভা ভার্চুয়াল মেশিন রানটাইমের সময় নির্দিষ্ট ক্লাসটি সন্ধান করতে সক্ষম নয় যা সংকলনের সময় পাওয়া গিয়েছিল।
সংকলনের সময় যদি কোনও শ্রেণি উপস্থিত ছিল তবে রানটাইম চলাকালীন জাভা ক্লাসপথে পাওয়া যায় না।
উদাহরণ:
NoClassDefFoundError এর একটি সহজ উদাহরণ ক্লাসটি অনুপস্থিত জেআর ফাইলের সাথে সম্পর্কিত বা জেআরকে ক্লাসপথে যুক্ত করা হয়নি বা কখনও কখনও জারের নামটি কেউ বদলেছে যেমন আমার ক্ষেত্রে আমার একজন সহকর্মী টিবকো.জারকে টিবকো_ভি 3.জারে পরিবর্তন করেছে এবং প্রোগ্রামটি হ'ল জাভা.আলং.নোক্লাসডেফফাউন্ডআরার সাথে ব্যর্থ হলাম এবং আমি ভাবছিলাম যে কী হয়েছে।
আপনি যে ক্লাসপাথটি কাজ করবেন বলে মনে করেন তা স্পষ্টভাবে-ক্লাসপাথ বিকল্প দিয়ে চালানোর চেষ্টা করুন এবং যদি এটি কাজ করে তবে এটি একটি নিশ্চিত সংক্ষিপ্ত চিহ্ন যে কেউ জাভা ক্লাসপাথকে ওভাররাইড করছে।
সম্ভাব্য সমাধান:
সম্পদ:
আমি খুঁজে পেয়েছি যে কখনও কখনও কোডটি রানটাইমের সময় পাওয়া ক্লাসের একটি বেমানান সংস্করণ সহ সংকলিত হয়ে থাকে তখন আমি একটি নো ক্লাসডিফফাউন্ড ত্রুটি পাই। আমি যে নির্দিষ্ট উদাহরণটি স্মরণ করি তা হ'ল অ্যাপাচি অক্ষ লাইব্রেরির সাথে। আমার রানটাইম ক্লাসপথে আসলে 2 টি সংস্করণ ছিল এবং এটি কোনও পুরানো ও অসামঞ্জস্যিত সংস্করণ এবং সঠিক সংস্করণটি তুলছিল যা একটি নো ক্লাসডিফফাউন্ড ত্রুটির কারণ হয়েছিল। এটি একটি কমান্ড লাইন অ্যাপে ছিল যেখানে আমি এর অনুরূপ একটি কমান্ড ব্যবহার করছি।
set classpath=%classpath%;axis.jar
আমি এটি ব্যবহার করে সঠিক সংস্করণটি তুলতে সক্ষম হয়েছি:
set classpath=axis.jar;%classpath%;
এটি আমি এখনও অবধি খুঁজে পাওয়া সেরা সমাধান ।
ধরুন আমাদের কাছে org.mypackage
ক্লাস যুক্ত একটি প্যাকেজ রয়েছে :
এবং এই প্যাকেজটি সংজ্ঞায়িত করা ফাইলগুলি শারীরিকভাবে ডিরেক্টরিতে D:\myprogram
(উইন্ডোজে) বা /home/user/myprogram
(লিনাক্সে) সংরক্ষণ করা হয়।
ফাইলের কাঠামোটি এর মতো দেখাবে:
আমরা যখন জাভা ডাকা, আমরা অ্যাপ্লিকেশন চালানোর জন্য নাম উল্লেখ করুন: org.mypackage.HelloWorld
। তবে আমাদের জাভাটি অবশ্যই আমাদের প্যাকেজ সংজ্ঞায়িত ফাইল এবং ডিরেক্টরিগুলির সন্ধান করতে হবে তা অবশ্যই বলতে হবে। সুতরাং প্রোগ্রামটি চালু করতে, আমাদের নিম্নলিখিত কমান্ডটি ব্যবহার করতে হবে:
আমি মাভেনের সাথে স্প্রিং ফ্রেমওয়ার্ক ব্যবহার করছিলাম এবং আমার প্রকল্পে এই ত্রুটিটি সমাধান করেছি।
ক্লাসে একটি রানটাইম ত্রুটি ছিল। আমি পূর্ণসংখ্যা হিসাবে একটি সম্পত্তি পড়ছিলাম, কিন্তু যখন এটি সম্পত্তি ফাইল থেকে মানটি পড়বে তখন এর মান দ্বিগুণ হয়েছিল।
বসন্ত আমাকে কোন লাইনে রানটাইম ব্যর্থ হয়েছিল তার পুরো স্ট্যাক ট্রেস দেয়নি। এটা সহজভাবে বলেছেন NoClassDefFoundError
। কিন্তু যখন আমি এটিকে একটি জাভা অ্যাপ্লিকেশন হিসাবে প্রয়োগ করি (এটি এমভিসি থেকে বের করে) তখন এটি দেয় ExceptionInInitializerError
যা সত্য কারণ এবং আমি কীভাবে ত্রুটিটি চিহ্নিত করেছি।
@ xli- এর উত্তর আমাকে আমার কোডে কী ভুল হতে পারে তার অন্তর্দৃষ্টি দিয়েছে।
NoClassDefFoundError
আসলে এটি দ্বারা সৃষ্ট হয়েছিল ExceptionInInitalizerError
, যার কারণে ঘটেছিল DateTimeParseException
)। এটি কিছুটা বিভ্রান্তিকর, তাই না? আমি জানি তাদের সম্ভবত এটির মতো করে তৈরি করার কারণ ছিল, তবে কমপক্ষে একটি ছোট ইঙ্গিতটি পাওয়া খুব ভাল লাগবে, এটি NoClassDefFoundError
কেটে নেওয়ার প্রয়োজন ছাড়াই অন্য ব্যতিক্রমের ফলস্বরূপ। শুধু ExceptionInInitializerError
আবার নিক্ষেপ আরও স্পষ্ট হবে। কখনও কখনও দুজনের মধ্যে সংযোগটি স্পষ্ট নাও হতে পারে।
আমি NoClassFoundError পাই যখন রানটাইম ক্লাস লোডার দ্বারা লোড করা ক্লাসগুলি ইতিমধ্যে জাভা রুটলোডার দ্বারা লোড হওয়া ক্লাসগুলি অ্যাক্সেস করতে পারে না। কারণ বিভিন্ন শ্রেণীর লোডারগুলি বিভিন্ন সুরক্ষা ডোমেনে রয়েছে (জাভা অনুসারে) jvm রুটলোডার দ্বারা ইতিমধ্যে লোড হওয়া ক্লাসগুলিকে রানটাইম লোডার ঠিকানার জায়গায় সমাধান করার অনুমতি দেবে না।
আপনার প্রোগ্রামটি 'জাভা-জাভাজনেন্ট: ট্রেসআরজার [আপনার জাভা আরজিএস]' দিয়ে চালান
এটি লোড হওয়া শ্রেণি, এবং শ্রেণীর লোড হওয়া লোডার এনভিউ দেখাচ্ছে আউটপুট উত্পাদন করে। কোনও শ্রেণীর কেন সমাধান করা যাচ্ছে না তা সন্ধান করা এটি খুব সহায়ক।
// ClassLoaderTracer.java
// From: https://blogs.oracle.com/sundararajan/entry/tracing_class_loading_1_5
import java.lang.instrument.*;
import java.security.*;
// manifest.mf
// Premain-Class: ClassLoadTracer
// jar -cvfm tracer.jar manifest.mf ClassLoaderTracer.class
// java -javaagent:tracer.jar [...]
public class ClassLoadTracer
{
public static void premain(String agentArgs, Instrumentation inst)
{
final java.io.PrintStream out = System.out;
inst.addTransformer(new ClassFileTransformer() {
public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
String pd = (null == protectionDomain) ? "null" : protectionDomain.getCodeSource().toString();
out.println(className + " loaded by " + loader + " at " + new java.util.Date() + " in " + pd);
// dump stack trace of the thread loading class
Thread.dumpStack();
// we just want the original .class bytes to be loaded!
// we are not instrumenting it...
return null;
}
});
}
}
একটি আকর্ষণীয় ক্ষেত্রে যেখানে আপনি প্রচুর দেখতে পাবেন NoClassDefFoundErrors
তা হ'ল আপনি:
throw
একটি RuntimeException
মধ্যে static
আপনার বর্গ ব্লকExample
Example
static class Example {
static {
thisThrowsRuntimeException();
}
}
static class OuterClazz {
OuterClazz() {
try {
new Example();
} catch (Throwable ignored) { //simulating catching RuntimeException from static block
// DO NOT DO THIS IN PRODUCTION CODE, THIS IS JUST AN EXAMPLE in StackOverflow
}
new Example(); //this throws NoClassDefFoundError
}
}
NoClassDefError
ExceptionInInitializerError
স্থির ব্লক সহ নিক্ষেপ করা হবে RuntimeException
।
আপনি যখন NoClassDefFoundErrors
আপনার ইউনিট টেস্টগুলিতে দেখেন এটি বিশেষত গুরুত্বপূর্ণ ।
একটি উপায়ে আপনি static
পরীক্ষার মধ্যে ব্লক নির্বাহকে "ভাগ করে" নিচ্ছেন, তবে প্রাথমিকটি ExceptionInInitializerError
কেবল একটি পরীক্ষার ক্ষেত্রে হবে। প্রথমটি যা সমস্যাযুক্ত Example
শ্রেণি ব্যবহার করে । অন্যান্য পরীক্ষার কেসগুলি যা Example
ক্লাসটি ব্যবহার করে তা কেবল নিক্ষেপ করবে NoClassDefFoundErrors
।
নীচের কৌশলটি আমাকে বহুবার সহায়তা করেছিল:
System.out.println(TheNoDefFoundClass.class.getProtectionDomain().getCodeSource().getLocation());
যেখানে TheNoDefFoundClass এমন একটি বর্গ যা আপনার প্রোগ্রাম দ্বারা ব্যবহৃত একই লাইব্রেরির পুরানো সংস্করণের পছন্দ হিসাবে "নষ্ট" হতে পারে। এটি প্রায়শই ক্ষেত্রে হয় যখন ক্লায়েন্ট সফ্টওয়্যার একটি প্রভাবশালী পাত্রে স্থাপন করা হয়, তার নিজস্ব ক্লাসলোডার এবং সর্বাধিক জনপ্রিয় লাইবগুলির প্রচুর সংস্করণে সজ্জিত।
আপনি যদি জেনারেট-কোড (ইএমএফ ইত্যাদি) তৈরি করে থাকেন তবে অনেকগুলি স্ট্যাটিক ইনিশিয়ালিসার থাকতে পারে যা সমস্ত স্ট্যাকের জায়গা খায়।
স্ট্যাক ওভারফ্লো প্রশ্ন দেখুন জাভা স্ট্যাকের আকারটি কীভাবে বাড়ানো যায়? ।
NoClassDefFoundError
স্ট্যাটিক ইনিশিয়েলজার যখন রানটাইমে পাওয়া যায় না এমন কোনও রিসোর্স বান্ডিল লোড করার চেষ্টা করে তখনও ঘটতে পারে , উদাহরণস্বরূপ এমন একটি সম্পত্তি ফাইল যা প্রভাবিত শ্রেণি META-INF
ডিরেক্টরি থেকে লোড করার চেষ্টা করে , কিন্তু সেখানে থাকে না। আপনি যদি ধরেন না NoClassDefFoundError
, কখনও কখনও আপনি পুরো স্ট্যাক ট্রেস দেখতে পাবেন না; এ থেকে উত্তরণের জন্য আপনি সাময়িকভাবে এর জন্য একটি catch
ধারা ব্যবহার করতে পারেন Throwable
:
try {
// Statement(s) that cause the affected class to be loaded
} catch (Throwable t) {
Logger.getLogger("<logger-name>").info("Loading my class went wrong", t);
}
for example a properties file that the affected class tries to load from the META-INF directory
। এটি আমার কাছে আসলে ঘটেছে এবং আমি NoClassDefFoundError
নিখোঁজ সম্পত্তি ফাইল যুক্ত করে সমাধান করতে সক্ষম হয়েছি । আমি এই উত্তরটি ঠিক যুক্ত করেছি কারণ কেউ উল্লিখিত পরিস্থিতিতে এই ত্রুটিটি আশা করে না।
static
ব্যর্থ. স্ট্যাটিক ইনিশিয়ালাইজেশন থেকে প্রচারিত কোনও চেক না করা ব্যতিক্রম এটি করবে।
static
আরম্ভের কারণে নয় ), তবে আমি আচরণের প্রদর্শিত একটি প্রকৃত উদাহরণ (অর্থাত্ একটি এমসিভিই) দেখতে আগ্রহী হব।
আমি এই ত্রুটিটি পেয়েছি যখন আমি আমার প্রকল্পে অন্য মডিউলের মাভেন নির্ভরতা যুক্ত করি, অবশেষে -Xss2m
আমার প্রোগ্রামটির জেভিএম বিকল্পে যুক্ত হয়ে সমস্যাটি সমাধান করা হয়েছিল (এটি জেডিকে 5.0 এর পরে ডিফল্টরূপে একটি মেগাবাইট)। এটি বিশ্বাস করা হয় যে প্রোগ্রামটিতে ক্লাস লোড করার মতো পর্যাপ্ত পরিমাণ নেই।
যদি কেউ এখানে java.lang.NoClassDefFoundError: org/apache/log4j/Logger
ত্রুটির কারণে আসে তবে আমার ক্ষেত্রে এটি উত্পাদিত হয়েছিল কারণ আমি লগ 4 জ 2 ব্যবহার করেছি (তবে আমি এর সাথে আসা সমস্ত ফাইল যুক্ত করি নি), এবং কিছু নির্ভরতা গ্রন্থাগার লগ 4 জে ব্যবহার করেছিল। সমাধানটি লগ 4 জে যুক্ত করা হয়েছিল 1.x ব্রিজ: লগ log4j-1.2-api-<version>.jar
4j সহ যে জারটি আসে 2. লগ 4 জ 2 মাইগ্রেশনে আরও তথ্য ।
আমার ক্ষেত্রে, সমস্যাটি ছিল একই প্রকল্পের দুটি পৃথক অনুলির মধ্যে পার্থক্য করতে একলাইসের অক্ষমতা। আমার একটিতে ট্রাঙ্ক (এসভিএন সংস্করণ নিয়ন্ত্রণ) এবং অন্যটি একবারে একটি শাখায় কাজ করছে। আমি জুনিত পরীক্ষার কেস হিসাবে ওয়ার্কিং কপির একটি পরিবর্তন চেষ্টা করেছিলাম, যার মধ্যে একটি ব্যক্তিগত অভ্যন্তরীণ শ্রেণিকে নিজস্ব পাবলিক ক্লাস হিসাবে বের করা এবং এটি কাজ করার সময়, আমি প্রকল্পের অন্য অনুলিপিটি অন্য কয়েকটি ঘুরে দেখার জন্য খোলাম কোডটির এমন একটি অংশ যা পরিবর্তনের প্রয়োজন ছিল। এক পর্যায়ে, NoClassDefFoundError
পপ আপ অভিযোগ করেছিল যে ব্যক্তিগত অভ্যন্তর শ্রেণি নেই; স্ট্যাক ট্রেসটিতে ডাবল-ক্লিক করা ভুল প্রকল্পের অনুলিপিটিতে উত্স ফাইলটিতে নিয়ে আসে।
প্রকল্পের ট্রাঙ্ক অনুলিপিটি বন্ধ করে পরীক্ষা মামলা চালানো আবার সমস্যা থেকে মুক্তি পেয়েছে।
এই ত্রুটিটি চেক করা জাভা সংস্করণ প্রয়োজনীয়তার কারণে হতে পারে।
আমার ক্ষেত্রে আমি এসডিকেএমএন ব্যবহার করে জাভা 9 থেকে জাভা 8 এ স্যুইচ করে একটি হাই-প্রোফাইল ওপেন-সোর্স প্রকল্প তৈরি করার সময়, এই ত্রুটিটি সমাধান করতে সক্ষম হয়েছি! ।
sdk list java
sdk install java 8u152-zulu
sdk use java 8u152-zulu
তারপরে নীচে বর্ণিত হিসাবে একটি পরিষ্কার ইনস্টল করছেন।
মাভেনকে আপনার বিল্ড টুল হিসাবে ব্যবহার করার সময় এটি কখনও কখনও সহায়ক - এবং সাধারণত সন্তুষ্টিজনক হয়, পরীক্ষার অক্ষম করে একটি পরিষ্কার 'ইনস্টল' বিল্ড করতে ।
mvn clean install -DskipTests
এখন সবকিছু নির্মিত এবং ইনস্টল করা হয়েছে, আপনি এগিয়ে যান এবং পরীক্ষা চালাতে পারেন।
mvn test
আমার প্রকল্পের জাভা বিল্ড পাথের "অর্ডার এবং রফতানি" ট্যাবে কোনও শ্রেণি রফতানি না করার সময় আমি NoClassDefFound ত্রুটি পেয়েছি। আপনি প্রকল্পের নির্মাণের পথে যুক্ত হওয়া কোনও নির্ভরতাগুলির "অর্ডার এবং রফতানি" ট্যাবে একটি চেকমার্ক স্থাপন নিশ্চিত করে নিন। গ্রহণের সতর্কতা দেখুন : XXXXXXXXXXX.jar রফতানি বা প্রকাশ করা হবে না। রানটাইম ক্লাসনটফাউন্ডএক্সেপশনগুলির ফলাফল হতে পারে ।
আমার ক্ষেত্রে আমি এই ত্রুটিটি জেডিকে সংস্করণগুলিতে না মিলার কারণে পেয়েছিলাম। আমি যখন ইন্টেলিজ থেকে অ্যাপ্লিকেশনটি চালানোর চেষ্টা করছিলাম তখন এটি কাজ করে না তবে কমান্ড লাইন থেকে এটি চালানো কাজ করে। এটি কারণ জাভা ১১ জেডিকে সেটআপ করা ইন্টিলিজ এটি চালানোর চেষ্টা করছিল তবে কমান্ড লাইনে এটি জাভা 8 জেডিকে নিয়ে চলছে। ফাইল> প্রকল্পের কাঠামো> প্রকল্প সেটিংস> প্রকল্প এসডিকে এর অধীনে সেটিংটি স্যুইচ করার পরে, এটি আমার পক্ষে কাজ করেছিল।
প্রত্যেকে এখানে কিছু জাভা কনফিগারেশন স্টাফ, জেভিএম সমস্যা ইত্যাদি নিয়ে কথা বলেছে, আমার ক্ষেত্রে ত্রুটিটি এই বিষয়গুলির সাথে মোটেই সম্পর্কিত ছিল না এবং খুব তুচ্ছ এবং কারণ সমাধান করার পক্ষে সহজ ছিল: আমার কন্ট্রোলারে আমার শেষ বিন্দুতে আমার একটি ভুল মন্তব্য ছিল ( স্প্রিং বুট অ্যাপ্লিকেশন)।
আমি লিবার্টি সার্ভারের সাথে কাজ করে জাভাতে NoClassDefFoundError সহ একটি আকর্ষণীয় সমস্যা পেয়েছি। আমি আইএমএস রিসোর্স অ্যাডাপ্টার ব্যবহার করছিলাম এবং আমার সার্ভার.এক্সএমএলে ইতিমধ্যে imsudbJXA.rar এর জন্য রিসোর্স অ্যাডাপ্টার ছিল। আমি যখন imsudbXA.rar এর জন্য নতুন অ্যাডাপ্টার যুক্ত করেছি, তখন DLIException, IMSConnectionSpec বা SQLInterationSpec এর উদাহরণস্বরূপ বস্তুর জন্য আমি এই ত্রুটিটি পেতে শুরু করব। আমি বুঝতে পারি না কেন তবে আমি কেবল imsudbXA.rar ব্যবহার করে আমার কাজের জন্য নতুন সার্ভার.এক্সএমএল তৈরি করে এটি সমাধান করেছি। আমি নিশ্চিত যে সার্ভার.একএমএমএলগুলিতে একাধিক রিসোর্স অ্যাডাপ্টার ব্যবহার করা ঠিক আছে, এটি সন্ধানের জন্য আমার হাতে সময় নেই।
জাভা রানটাইমের সময় A ক্লাস সন্ধান করতে অক্ষম ছিল। ক্লাস এ একটি ভিন্ন কর্মক্ষেত্র থেকে খাঁটি প্রকল্প আর্টক্লিয়েন্টে ছিল। তাই আমি আমার এক্লিপস প্রকল্পে আর্টক্লিয়েন্ট আমদানি করেছি। আমার দুটি প্রকল্প আর্টক্লিয়েন্টকে নির্ভরতা হিসাবে ব্যবহার করছিল। আমি এইগুলির জন্য প্রকল্পের রেফারেন্সে লাইব্রেরি রেফারেন্স পরিবর্তন করেছি (বিল্ড পাথ -> বিল্ড পাথ কনফিগার করুন)।
আর সমস্যা চলে গেল।
আমার একই সমস্যা ছিল, এবং আমি অনেক ঘন্টা স্টক ছিল।
আমি সমাধান খুঁজে পেয়েছি। আমার ক্ষেত্রে এটির কারণে স্থিতিশীল পদ্ধতিটি সংজ্ঞায়িত হয়েছিল। জেভিএম class শ্রেণির আর একটি অবজেক্ট তৈরি করতে পারে না।
উদাহরণ স্বরূপ,
private static HttpHost proxy = new HttpHost(proxyHost, Integer.valueOf(proxyPort), "http");
এসআরসি লাইব্রেরি থেকে দুটি ফাইল অপসারণ করার পরে আমি এই বার্তাটি পেয়েছি এবং এগুলি আবার ফিরিয়ে আনলে আমি এই ত্রুটি বার্তাটি দেখতে থাকি।
আমার সমাধানটি ছিল: পুনরায় সূচনা Eclipse। তার পর থেকে আমি আর এই বার্তাটি দেখিনি :-)
এতে module:app
এবং এর সাথে মেলে কিনা তা নিশ্চিত করুন module:lib
:
android {
compileSdkVersion 23
buildToolsVersion '22.0.1'
packagingOptions {
}
defaultConfig {
minSdkVersion 17
targetSdkVersion 23
versionCode 11
versionName "2.1"
}
{s
এবং দুটি }
)) আপনি এটা ঠিক করতে পারবো?