Як вирішити java.lang.NoClassDefFoundError?


221

Я спробував обидва приклади в навчальних програмах Java Oracle . Вони обоє складають чудово, але під час виконання, обидва приходять з цією помилкою:

Exception in thread "main" java.lang.NoClassDefFoundError: graphics/shapes/Square
    at Main.main(Main.java:7)
Caused by: java.lang.ClassNotFoundException: graphics.shapes.Square
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

Я думаю, що у мене може бути Main.javaфайл у неправильній папці. Ось ієрархія каталогів:

graphics
 Main.java
 shapes
|    Square.java
|    Triangle.java
 linepoint
|    Line.java
|    Point.java
 spaceobjects
|    Cube.java
|    RectPrism.java

А ось Main.java:

import graphics.shapes.*;
import graphics.linepoint.*
import graphics.spaceobjects.*;

public class Main {
    public static void main(String args[]) {
        Square s = new Square(2,3,15);
        Line l = new Line(1,5,2,3);
        Cube c = new Cube(13,32,22);
    }
}

Що я тут роблю неправильно?

ОНОВЛЕННЯ

Після того, як я помістив Mainклас у graphicsпакет (я додав package graphics;до нього), встановив класний шлях на "_test" (папка, що містить графіку), скомпілював його та запустив його за допомогою java graphics.Main(з командного рядка), він працював.

Дійсно пізно ОНОВЛЕННЯ №2

Я не використовував Eclipse (лише Notepad ++ та JDK), і вищенаведене оновлення вирішило мою проблему. Однак, схоже, багато з цих відповідей стосуються Eclipse та IntelliJ, але вони мають подібні поняття.


1
Дивлячись на ваш основний клас, він не в упаковці (у вас був би package graphics;вгорі). Це graphicsкерівник вашої структури пакунків? Чи має площа package graphics.shapesвгорі?
lreeder

1
Ви перераховуєте, де знаходяться файли .java, але оскільки ви отримуєте проблему виконання , то вас насправді цікавить, де знаходяться файли .class і чи є вони на вашому класі або ні. Як ви виконуєте класу Main?
Thor84no

Просто натисніть Shift + ctrl + o в затемненні, щоб організувати свій імпорт
happybuddha

Переконайтесь, що ви правильно ввели ім'я класу. Я отримував цю помилку, оскільки я не починав назву класу з великої літери
Jeremy Borg

Іноді це трапляється в IntelliJ IDEA після капітального рефакторингу. Клацніть правою кнопкою миші на вашому проекті та виберіть -> Compile Module , а потім перезапустіть проект і він повинен працювати знову.
Зар

Відповіді:


223

Після складання коду ви закінчуєте .classфайли для кожного класу вашої програми. Ці бінарні файли - це байт-код, який інтерпретує Java для виконання вашої програми. NoClassDefFoundErrorПоказує , що завантажувач класів (в даному випадку java.net.URLClassLoader), який відповідає за класи динамічно завантаження, не може знайти.class файл класу , який ви намагаєтеся використовувати.

Ваш код не компілюється, якщо потрібних класів не було б (якщо тільки класи не завантажені відображенням), тому зазвичай цей виняток означає, що ваш класний шлях не включає необхідних класів. Пам’ятайте, що завантажувач класів (конкретно java.net.URLClassLoader) шукатиме класи у пакунку abc у папці a / b / c / у кожному записі вашого класного шляху. NoClassDefFoundErrorможе також вказати, що вам не вистачає перехідної залежності файлу .jar, проти якого ви компілювали і ви намагаєтесь використовувати.

Наприклад, якщо у вас був клас com.example.Foo, після його складання ви мали б файл класу Foo.class. Скажімо, наприклад, що ваш робочий каталог є .../project/. Цей файл класу повинен бути розміщений .../project/com/example, і ви встановите свій класний шлях .../project/.

Бічна примітка: я б рекомендував скористатися дивовижними інструментами, які існують для мов Java та JVM. Сучасні IDE на зразок Eclipse та IDEA, а також інструменти управління на зразок Maven або Gradle допоможуть вам не турбуватися про класові шляхи (стільки) і зосередитись на коді! Однак, це посилання пояснює, як встановити класний шлях при виконанні в командному рядку.


Я читаю це через помилку, з якою я зіткнувся під час спроби запустити тест на Android. Виявляється, NoClassDefFoundError, в моєму випадку, стався внаслідок відсутності залежностей у тесті. Мені потрібно думати про введення залежності, щоб не допустити подібних помилок. Дякую за детальну відповідь.
типовий данни

130

Я б хотів виправити точку зору інших NoClassDefFoundError.

NoClassDefFoundError можуть виникати з кількох причин, як-от

  1. ClassNotFoundException - .class не знайдено для цього посиланого класу незалежно від того, доступний він у час компіляції чи ні (тобто базовий / дочірній клас).
  2. Файл класу знаходиться, але виняток піднімається під час ініціалізації статичних змінних
  3. Файл класу знаходиться, виняток піднімається під час ініціалізації статичних блоків

У первісному запитанні це був перший випадок, який можна виправити, встановивши CLASSPATH на файл jar jar із посилаються або на його папку пакунків.

Що це означає, якщо говорити "доступно в час компіляції"?

  • Посиланий клас використовується в коді.
    Напр .: Два класи, A і B (розширює A). Якщо на B посилається безпосередньо в коді, він доступний під час компіляції, тобто A a = новий B ();

Що означає "не доступно під час компіляції"?

  • Час класу компіляції та клас виконання є різними, тобто, наприклад, базовий клас завантажується за допомогою імені дочірнього класу, наприклад Class.forName ("ім'я класу")
    Напр .: Два класи, A і B (розширює A). Код має
    A a = Class.forName ("B"). NewInstance ();

У моєму випадку я склав клас, вони перемістили його до каталогу під назвою app. Мені довелося додати рядок із package app;і перекомпілювати, перш ніж я зміг перенести його у додаток до підкаталогу.
taco

1
Крім перерахованих вище 3, ClassLoaders також може спричинити таку помилку, яка в основному є ClassNotFoundException, у цьому сценарії клас може бути присутнім у classpath, але намагаються завантажити з іншого ClassLoader
Fahad

2 і 3 залежать від класного завантажувача. На думку javadoc, виняток призначений лише для причини 1.
Самуїл

1
Я перевірив випадок 2 і випадок 3, це "не NoClassDefFoundError, це файл ExceptionInInitializerError Case 2.Class розміщений, але виняток піднято під час ініціалізації статичних змінних. Зберігається файл Case 3.Class, виняток піднімається під час ініціалізації статичних блоків
Майкл

1
@Michael. Це посилання говорить про те, що ваш стек-трек буде також показаний NoClassDefFoundErrorдля цього випадку: archive.is/YPbYI#selection-2107.0-2115.13
Pacerier

15

NoClassDefFoundErrorозначає, що клас присутній у classpath at Compile time, але він не існує у classpath at Runtime.

Якщо ви використовуєте Eclipse, переконайтеся , що у вас є shapes, linepointsа spaceobjectsтакож записи в .classpathфайлі.


1
Як впоратися з цим під час виконання через try / catch ?
Maveň ツ

5
Ця відповідь не є правильним способом її написання. Правильним було б: "ОДНА можлива причина цієї помилки - це ...." Але можуть бути й інші причини, чому ви отримуєте цю помилку, наприклад, під час завантаження файлу JAR під час виконання за допомогою завантажувача.
Елмуе

13

якщо ви отримали одну з цих помилок під час компіляції та запуску:

* NoClassDefFoundError

* Error: Could not find or load main class hello

* Exception in thread "main" java.lang.NoClassDefFoundError:javaTest/test/hello 
(wrong name: test/hello)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

-------------------------- РІШЕННЯ -----------------------

проблема здебільшого в організації пакетів. Ви повинні упорядкувати свої класи в папках відповідно до класифікацій пакунків у вихідному коді.

On Compiling process use this command:

javac -d . [FileName.java]

To Run the class please use this command:

java [Package].[ClassName]

Значення "-d". команда javac виконує трюк, створюючи структуру папок пакунків замість того, щоб ставити всі файли .class у кореневій каталог, дякую!
Хорхе Сампайо

9
java.lang.NoClassDefFoundError

вказує, що щось було знайдено під час компіляції, але не під час виконання . можливо, вам просто доведеться додати його до класного шляху.


15
Як це зробити?
Нарендра Сінгх

залежить від контексту, про який ви запитуєте.
sschrass

6

Немає винятку з визначення класу, коли призначений клас не знайдений у шляху до класу. У часовому класі компіляції: Клас був сформований з Java-компілятора, але якось у час виконання залежний клас не знайдено.

Давайте пройдемо один простий приклад:

public class ClassA{
public static void main(String args[]){
     //Some gibberish Code...
     String text = ClassB.getString();
     System.out.println("Text is :" + text);
}

}

public class ClassB{
    public static String getString(){
      return "Testing Some Exception";
 }
}

Тепер припустимо, що вищевказані два вихідні коди Java розміщені в деякій папці, скажімо, "NoClassDefinationFoundExceptionDemo"

Тепер відкрийте оболонку (якщо припустити, що Java вже налаштована правильно)

  1. Перейдіть до папки "NoClassDefinationFoundExceptionDemo"
  2. Скомпілювати вихідні файли Java javac ClassB javac ClassA
  3. Обидва файли складені успішно і генеруються файли класу в тій же папці, що і ClassA.class та ClassB.class
  4. Тепер, оскільки ми перебуваємо над ClassPath у поточній робочій директорії, тому ми виконуємо наступну команду java -cp. ClassA і це працювали успішно, і ви побачите вихід на екрані
  5. Тепер скажемо, ви видалили файл ClassB.class з поточного каталогу. і тепер ви знову виконаєте команду. java -cp. ClassA Тепер він привітає вас з NoClassDefFoundException. як ClassB, що є залежністю для ClassA, не знайдений у classpath (тобто, теперішній робочий каталог).

5

NoClassDefFoundError на Java:

Визначення:

NoClassDefFoundError з’явиться, якщо клас був присутній під час компіляції, але він не доступний у java classpath під час виконання. Зазвичай ви побачите нижній рядок у журналі, коли ви отримаєте NoClassDefFoundError: Виняток у потоці "main" java.lang.NoClassDefFoundError

Можливі причини:

  1. Клас недоступний у Java Classpath.

  2. Можливо, ви запускаєте свою програму за допомогою команди jar, а клас не визначався в атрибуті ClassPath файлу маніфесту.

  3. Будь-який сценарій запуску є переважаючою змінною середовища Classpath.

  4. Оскільки NoClassDefFoundError є підкласом java.lang.LinkageError, він також може виникнути, якщо одна з таких залежностей, як рідна бібліотека, може бути недоступною.

  5. Перевірте наявність файлу java.lang.ExceptionInInitializerError у своєму журналі. NoClassDefFoundError через збій статичної ініціалізації є досить поширеним явищем.

  6. Якщо ви працюєте в середовищі J2EE, то видимість класу серед кількох Classloader також може спричинити java.lang.NoClassDefFoundError, див. Приклади та розділ сценаріїв для детального обговорення.

Можливі рішення:

  1. Переконайтеся, що всі необхідні класи Java включені в клас додатків програми. Найпоширеніша помилка - не включати всі необхідні класи перед тим, як розпочати виконання програми Java, яка має залежність від деяких зовнішніх бібліотек.

  2. Класовий шлях програми є правильним, але змінна середовища Classpath перекривається перед виконанням програми.

  3. Переконайтесь, що вищезазначений ExceptionInInitializerError не відображається у сліді стека вашої програми.

Ресурси:

3 способи вирішити java.lang.NoClassDefFoundError на Java J2EE

java.lang.NoClassDefFoundError - Як вирішити помилку не знайденого класу Def


3

Якщо ваш проект знаходиться в пакеті типу, com.blahcodeі ваш клас викликається Main, компільовані файли можуть виводитися у структурі каталогів, як./out/com/blahcode/Main.class . Особливо це стосується IntelliJ IDEA.

При спробі запустити з оболонки або cmd вам потрібно cdдо того, що містить comпідкаталог.

cd out
java -classpath . com.blahcode.Main

1

Працюючи над проектом NetBeans протягом багатьох місяців, я раптом отримав повідомлення NoClassDefFoundError невдовзі після отримання сповіщення про "низьку пам'ять". Проведення чистої перебудови не допомогло, але повністю закрити Netbeans та повторно відкрити проект не було повідомлень про помилки.


1

Ця відповідь характерна для java.lang.NoClassDefFoundError, що відбувається в сервісі :

Нещодавно моя команда побачила цю помилку після оновлення оборотів, які постачали послугу. Rpm та програмне забезпечення всередині нього були побудовані разом з Maven, тому здавалося, що у нас є залежність від компіляції часу, яка просто не була включена в rpm.

Однак при дослідженні клас, який не був знайдений, знаходився в тому ж модулі, що і декілька класів у сліді стека. Крім того, це не модуль, який нещодавно був доданий до збірки. Ці факти вказували, що це може бути не проблемою залежності Мевена.

Можливе рішення: Перезавантажте сервіс!

Здається, що оновлення rpm недійсне ручку файлу служби на нижньому файлі jar. Потім служба побачила клас, який не був завантажений в пам'ять, шукав його серед свого списку ручок файлів jar і не знайшов його, оскільки обробка файлу, з якого він може завантажувати клас, була недійсною. Перезапуск служби змусив її перезавантажити всі свої файли, що потім дозволило завантажити той клас, який не був знайдений в пам'яті відразу після оновлення rpm.

Сподіваюся, що конкретний випадок комусь допоможе.


1

Я сьогодні зіткнувся з проблемою. У мене є проект Android і після ввімкненняmultidex проекту він більше не запускається.

Причиною було те, що я забув назвати конкретний мультидекс-метод, який слід додати до Application classта посилатися раніше всього іншого.

 MultiDex.install(this);

Дотримуйтесь цього підручника, щоб правильно включити мультидекс https://developer.android.com/studio/build/multidex.html

Ви повинні додати ці рядки до класу додатків

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

1

У моєму проекті вирішено проблему, це те, що браузер Chrome і Chromeedriver не є сумісними. У мене була дуже стара версія драйвера, яка не могла навіть відкрити браузер. Я тільки що завантажив останню версію обох і вирішив проблему. Як я виявив проблему? Оскільки я керував своїм проектом, використовуючи вбудований драйвер Firefox Selenium зі старою версією FF, включену до моєї програми, я зрозумів, що проблема полягає в несумісності між браузером і драйвером.

Сподіваюсь, це може допомогти будь-кому із подібною проблемою як моєю, яка генерувала це саме повідомлення про помилку.


0

Мої два центи в цьому ланцюжку:

Переконайтесь, що в класному шляху міститься повний шлях ( /home/user/lib/some_lib.jarзамість ~/lib/some_lib.jar), інакше ви все ще можете зіткнутися з NoClassDefFoundErrorпомилкою.


Це частково правда, але це складніше. 1) Ви можете використовувати відносні шляхи в класі class, але вони повинні бути вирішені JVM ... відносно поточного каталогу JVM. Це робить їх крихкими . 2) Ви можете використовувати ~та інші мета символи оболонки під час встановлення змінної середовища класного шляху, але лише за умови, що механізм, який ви використовуєте для встановлення змінної, розширює їх до реальних імен. Якщо ви використовуєте bash, ви можете отримати "змішані" результати. Наприклад, подивіться, що ви отримуєте під час введення echo ~:~в командному рядку. Перший ~розширений, але другий - ні.
Стівен С

0

Я отримую NoClassFoundError, коли класи, завантажені завантажувачем класів виконання, не можуть отримати доступ до класів, які вже завантажені кореневим завантажувачем Java. Оскільки завантажувачі різних класів знаходяться в різних областях безпеки (згідно з java), jvm не дозволить вирішувати класи, вже завантажені кореневим завантажувачем, у адресному просторі навантажувача часу виконання.

Запустіть свою програму за допомогою "java -javaagent: tracer.jar [ВАШИ java ARGS]"

Він дає вихід, що показує завантажений клас, і завантажувач env, який завантажив клас. Дуже корисно простежити, чому клас неможливо вирішити.

// 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;
            }
        });
    }
}

0

Це сталося зі мною в Android Studio.

Рішення, яке працювало для мене: просто перезавантажте студію.


0

У мене була та сама проблема з моєю розробкою Android, використовуючи студію Android. Надані рішення загальні і не допомогли мені (принаймні для мене). Після годин досліджень я знайшов наступне рішення і може допомогти розробникам андроїдів, які займаються розробкою за допомогою Android Studio. змінити налаштування, як показано нижче. Налаштування -> Збірка, Виконання, Розгортання -> Миттєвий запуск -> зніміть прапорець біля першого параметра.

З цією зміною я працюю. Сподіваюсь, це допоможе моїм друзям-розробникам.


0

Одне джерело помилки для цього винятку може випливати з непослідовних визначень для Proguard, наприклад, відсутніх

-libraryJars "path.to.a.missing.jar.library".

Це пояснює, чому компіляція та запуск працює чудово, враховуючи, що баночка є, а очищення та збирання не вдається. Не забудьте визначити щойно додані бібліотеки jar в налаштуваннях proguard!

Зауважте, що повідомлення про помилки Proguard насправді не відповідає стандартним стандартам, оскільки їх легко плутати з аналогічними повідомленнями мурашок, які надходять, коли банку взагалі немає. Тільки на самому дні з’явиться невеличкий натяк на захист у біді. Отже, цілком логічно починати пошук традиційних помилок на класічному шляху тощо, але це буде марно.

Очевидно, що винятком NoClassDefFound будуть результати при запуску, наприклад, отриманий виконуваний jar, побудований та заснований на недостатній консистенції proguard. Деякі називають це захисником "Пекло"


0

Я використовую плагін FileSync для Eclipse, щоб я міг жити налагодженням на Tomcat & я отримав, NoClassFoundErrorтому що я додав запис синхронізації для binкаталогу в робочій області Eclipse => classesв metadataTomcat, але також не додав синхронізацію папок для extlibкаталогу в Eclipse=>

C:\Users\Stuart\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\myApp\WEB-INF\lib


0

Я розробляю додаток на базі Eclipse, також відомий як RCP (Rich Client Platform) . І я зіткнувся з цією проблемою після рефакторингу (переміщення одного класу з плагін в новий).

Очищення проекту та оновлення Maven не допомогли.

Проблему викликав Bundle-Activator, який не оновлювався автоматично. Ручне оновлення Bundle-Activator під MANIFEST.MF у новому PlugIn виправило мою проблему.


0

якщо ви нещодавно додали підтримку мультидекса в студії Android, як це:

// To Support MultiDex
implementation 'com.android.support:multidex:1.0.1'

тож ваше рішення просто поширити з MultiDexApplication замість програми

public class MyApp extends MultiDexApplication {

0

Якщо ви використовуєте більше одного модуля, ви повинні мати

dexOptions {
    preDexLibraries = false
}

у вашому файлі збірки.


0

Перевірте, чи є у вас статичний обробник у вашому класі. Якщо так, будь ласка, будьте обережні, оскільки статичний обробник може бути ініційований лише в потоці, що має петлю, збій може бути спровокований таким чином:

1.по-перше, створіть екземпляр класу в простому потоці і зафіксуйте краш.

2. Після цього викличте польовий метод класу в основній темі, ви отримаєте NoClassDefFoundError.

ось код тесту:

public class MyClass{
       private static  Handler mHandler = new Handler();
       public static int num = 0;
}

у вашому методі onCrete Основна діяльність додайте частину тестового коду:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //test code start
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                MyClass myClass = new MyClass();
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }
    }).start();

    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    MyClass.num = 3;
    // end of test code
}

є простий спосіб виправити це за допомогою обробникаThread to init handler:

private static Handler mHandler;
private static HandlerThread handlerThread = new HandlerThread("newthread");
static {
    handlerThread.start();
    mHandler = new Handler(handlerThread.getLooper(), mHandlerCB);
}

0

Не використовуйте тестові класи поза модулем

У мене немає рішення, просто інший аромат випадку "присутній під час компіляції, відсутній під час виконання".

Я намагався використовувати дуже зручний метод з тестового класу JUnit з іншого класу тестів, який знаходиться в іншому модулі. Це ні-ні, оскільки тестовий код не є частиною упакованої банки, але я цього не зрозумів, оскільки він виглядає видимим для класу користувача зсередини Eclipse.

Моє рішення полягало в тому, щоб розмістити метод у існуючому класі утиліт, який є частиною виробничого коду.


0

В моєму оточенні я стикаюся з цим питанням під час одиничного тестування. Після додавання однієї залежності бібліотеки до * .pom це виправлено.

наприклад:

повідомлення про помилку:

java.lang.NoClassDefFoundError: com/abc/def/foo/xyz/Iottt

пом:

<dependency>
    <groupId>com.abc.def</groupId>
    <artifactId>foo</artifactId>
    <scope>test</scope>
</dependency>

0

Я отримав цю помилку після зміни гілки Git. Для конкретного випадку Eclipse у каталозі .settings для файлу org.eclipse.wst.common.component були пропущені рядки. Як видно нижче

Відновлення залежностей проекту за допомогою Maven Install допоможе.

введіть тут опис зображення


0

якщо ви користуєтеся gradlew, перейдіть ./gradle/wrapper/gradle-wrapper.propertiesта змінітьdistributionUrl на правильну версію gradle.

Якщо ви використовуєте JDK14, спробуйте

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip

-1

Це трапляється багато з моїми пристроями для генімоції. Переконайтеся, що на диску, де встановлено Genymotion, є достатня кількість пам'яті.


Чи є у вас якісь посилання на це?
Вай Ха Лі

Ні, у мене просто не вистачає місця на диску, і якщо я не звільняю гарну суму + вилучаю / перевстановлюю віртуальний пристрій Genymotion, я продовжую отримувати цю помилку.
totteire
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.