Jak rozwiązać Javę.lang.Noclassdefounderror?

Wypróbowałem oba przykłady w Oracle tutoriale Java. Obie kompilują się dobrze, ale w czasie wykonywania oba wychodzą z tym błędem:

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

Myślę, że mogę mieć Main.java plik w niewłaściwym folderze. Oto hierarchia katalogów:

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

A oto 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);
    }
}
Co ja tu robię źle?

UPDATE

Po umieszczeniu put Main klasy w pakiecie graphics (dodałem do niego package graphics;), Ustaw classpath na " _test" (folder zawierający grafikę), skompilował go i uruchomił za pomocą java graphics.Main (z linii poleceń), zadziałał.

Bardzo późna aktualizacja #2

Nie używałem Eclipse (tylko Notepad++ i JDK), a powyższa aktualizacja rozwiązała mój problem. Wydaje się jednak, że wiele z tych odpowiedzi dotyczy Eclipse i IntelliJ, ale mają one podobne pojęcia.

Author: Yu Hao, 2013-07-31

23 answers

Po skompilowaniu kodu, kończysz z plikami .class dla każdej klasy w twoim programie. Te pliki binarne są bajtowym kodem, który Java interpretuje do wykonania programu. NoClassDefFoundError wskazuje, że classloader (w tym przypadku java.net.URLClassLoader), który jest odpowiedzialny za dynamiczne ładowanie klas, nie może znaleźć pliku .class dla klasy, której próbujesz użyć.

Twój kod nie kompilowałby się, gdyby wymagane klasy nie były obecne (chyba że klasy są załadowane odbiciem), więc zazwyczaj ten wyjątek oznacza, że ścieżka classpath nie zawiera wymaganych klas. Pamiętaj, że classloader (konkretnie java.net.URLClassLoader) będzie szukał klas w pakiecie a.b. c w folderze a/b/ c / w każdym wpisie w Twojej classpath. NoClassDefFoundError może również wskazywać, że brakuje przechodniej zależności a .plik jar, który skompilowałeś i próbujesz użyć.

Na przykład, jeśli masz klasę com.example.Foo, po kompilacji będziesz miał plik klasy Foo.class. Powiedzmy na przykład swoją pracę Katalog to .../project/. Ten plik klasy musi być umieszczony w .../project/com/example, a ścieżka klasy powinna być ustawiona na .../project/.

Uwaga na marginesie: polecam skorzystanie z niesamowitego narzędzia, które istnieje dla języków Java i JVM. Nowoczesne IDE jak Eclipse i narzędzia do zarządzania pomysłami i budowaniem jak Maven czy Gradle pomogą Ci nie martwić się o ścieżki klasowe (tak bardzo) i skupić się na kodzie! To powiedziawszy, ten link wyjaśnia, jak ustawić classpath podczas wykonywania polecenia Kolejka

 175
Author: Samuel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-01 06:55:03

Chciałbym poprawić perspektywę innych na NoClassDefFoundError.

NoClassDefFoundError może wystąpić z wielu powodów, takich jak

  1. ClassNotFoundException -- .klasa nie została znaleziona dla tej odwołującej się klasy niezależnie od tego, czy jest ona dostępna w czasie kompilacji, czy nie(tzn. klasa bazowa/potomna).
  2. plik klasy zlokalizowany, ale wyjątek wywołany podczas inicjalizacji zmiennych statycznych
  3. zlokalizowany plik klasy, wyjątek wywołany podczas inicjalizacji statycznych bloków

W pierwotnym pytaniu, był to pierwszy przypadek, który można poprawić poprzez ustawienie CLASSPATH do pliku JAR odwołanych klas lub do jego folderu pakietów.

Co to znaczy mówiąc "dostępne w czasie kompilacji"?

  • odwołana klasa jest używana w kodzie.
    np: dwie klasy, A i B (rozszerza A). Jeśli B jest odwołany bezpośrednio w kodzie, to jest dostępne w czasie kompilacji, tj. A A = new B ();

Co to znaczy mówiąc "niedostępne w czasie kompilacji"?

  • klasa czasu kompilacji i klasa runtime są różne, tzn. na przykład klasa bazowa jest ładowana przy użyciu nazwy klasy potomnej na przykład Klasy.forName ("classname")
    Na przykład: dwie klasy, A i B (rozszerza A). Kod ma
    A a = Klasa.forName ("B").newInstance ();
 101
Author: p1nkrock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-14 17:40:21

NoClassDefFoundError oznacza to, że klasa jest obecna w ścieżce classpath w Compile time, ale nie istnieje w ścieżce classpath w Runtime.

Jeśli używasz Eclipse, upewnij się, że masz shapes, linepoints oraz spaceobjects jako wpisy w pliku .classpath.

 12
Author: Konstantin Yovkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-31 15:02:26

Jeśli masz jeden z tych błędów podczas kompilacji i uruchamiania:

  • NoClassDefFoundError

  • Błąd: nie można znaleźć lub załadować głównej klasy hello

  • Wyjątek w wątku "main" java.lang.NoClassDefFoundError: javaTest / test / hello ( błędna nazwa: test / Witam) na Javie.lang.ClassLoader.defineClass1 (metoda natywna) na Javie.lang.ClassLoader.define (Nieznane źródło) na Javie.Ochrona.SecureClassLoader.define (Nieznane źródło) na java. net. URLClassLoader. defineClass(Nieznane źródło) w java. net. URLClassLoader. access$100 (Nieznane źródło) w java. net. URLClassLoader$1.run (Nieznane źródło) w java. net. URLClassLoader$1.run (Nieznane źródło) na Javie.Ochrona.AccessController.doPrivileged(metoda rodzima) w java. net. URLClassLoader. findClass(Nieznane źródło) na Javie.lang.ClassLoader.loadClass(Nieznane źródło) w słońcu.misc.Launcher$AppClassLoader.loadClass(Nieznane źródło) na java.lang.ClassLoader.loadClass(Nieznane źródło) w słońcu.wyrzutnia.LauncherHelper.checkAndLoadMain (Unknown Source)

-------------------------- SOLUTIION -----------------------

Problem tkwi głównie w orgnizacji pakietów. Powinieneś uporządkować swoje klasy w folderach odpowiednio w odniesieniu do klasyfikacji pakietów w kodzie źródłowym.

On Compiling process use this command:

javac -d . [FileName.java]

To Run the class please use this command:

java [Package].[ClassName]
 10
Author: sami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-07 11:23:51
java.lang.NoClassDefFoundError

Wskazuje, że coś zostało znalezione w compiletime , ale nie w runtime. może po prostu musisz to dodać do ścieżki klasowej.

 8
Author: sschrass,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-31 15:03:00

Żaden wyjątek definicji klasy nie występuje, gdy zamierzona klasa nie zostanie znaleziona w ścieżce klasy. W czasie kompilacji klasa: klasa została wygenerowana z kompilatora Javy, ale jakoś w czasie wykonywania zależna Klasa nie jest znaleziona.

Przejdźmy do jednego prostego przykładu:

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";
 }
}

Przyjmijmy teraz, że powyższe dwa kod źródłowy Javy są umieszczone w jakimś folderze powiedzmy "NoClassDefinationFoundExceptionDemo"

Teraz otwórz powłokę (zakładając, że Java jest już jest poprawnie skonfigurowany)

  1. przejdź do folderu "NoClassDefinationFoundExceptionDemo"
  2. Kompilowanie Plików Źródłowych Javy javac ClassB javac ClassA
  3. oba pliki są kompilowane pomyślnie i generowane pliki klas w tym samym folderze jako ClassA.klasy i Klasyb.Klasa
  4. teraz, gdy przenosimy ClassPath do bieżącego katalogu roboczego dlatego wykonujemy następujące polecenie java-cp . ClassA i to działało pomyślnie i zobaczysz Wyjście na ekranie
  5. powiedzmy, że usunąłeś ClassB.plik klasy z bieżącego katalogu. a teraz wykonaj polecenie ponownie. java-cp . ClassA Teraz powita cię z Noclassdefoundexception. jako ClassB, która jest zależnością dla ClassA, nie znajduje się w classpath(tzn. obecnym katalogu roboczym).
 6
Author: bharatj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-22 16:28:32

NoClassDefFoundError w Javie:

Definicja:

Noclassdefounderror pojawi się, jeśli klasa była obecna w czasie kompilacji, ale nie jest dostępna w java classpath podczas wykonywania. Zwykle zobaczysz poniższą linię w dzienniku, gdy otrzymasz NoClassDefFoundError: Wyjątek w wątku "main" java.lang.NoClassDefFoundError

Możliwe Przyczyny:

  1. Klasa nie jest dostępna w Java Classpath.

  2. Możesz być uruchomienie programu za pomocą polecenia jar i klasy nie zostało zdefiniowane w atrybucie ClassPath pliku manifestu.

  3. Każdy skrypt startowy nadpisuje zmienną środowiskową Classpath.

  4. Ponieważ NoClassDefFoundError jest podklasą Javy.lang.LinkageError może również pojawić się, jeśli jedna z jego zależności, taka jak native library, może nie być dostępna.

  5. Sprawdź java.lang.Exceptioninininitializererror w pliku dziennika. NoClassDefFoundError z powodu awarii statyczna inicjalizacja jest dość powszechna.

  6. Jeśli pracujesz w środowisku J2EE niż widoczność klasy wśród wielu Classloader może również powodować java.lang.NoClassDefFoundError, zobacz przykłady i sekcję scenariusze do szczegółowej dyskusji.

Możliwe Rozdzielczości:

  1. Sprawdź, czy wszystkie wymagane klasy Java są zawarte w classpath aplikacji. Najczęstszym błędem jest nie włączenie wszystkich niezbędnych klas, przed rozpoczęciem wykonywania aplikacji Java, która ma zależności od niektórych bibliotek zewnętrznych.

  2. Classpath aplikacji jest poprawna, ale zmienna środowiskowa Classpath jest nadpisywana przed uruchomieniem aplikacji.

  3. Sprawdź, czy wspomniany Exceptioninininitializererror nie pojawia się w śledzeniu stosu aplikacji.

Zasoby:

3 sposoby rozwiązywania Javy.lang.Noclassdefounderror w Javie J2EE

Java.lang.NoClassDefFoundError - jak rozwiązać błąd nie odnalezionej klasy Def

 3
Author: Aftab Virtual,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-08 08:19:18

Jeśli twój projekt znajduje się w pakiecie takim jak com.blahcode, a twoja klasa nazywa się Main, skompilowane pliki mogą być wyprowadzane w strukturze katalogów takiej jak ./out/com/blahcode/Main.class. Jest to szczególnie prawdziwe w przypadku idei IntelliJ.

Podczas próby uruchomienia z powłoki lub cmd, musisz cd do tego, który zawiera com jako podkatalog.

cd out
java -classpath . com.blahcode.Main
 2
Author: Hypershadsy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-27 23:32:39

Miałem dziś do czynienia z tym problemem. Mam projekt na Androida i po włączeniu multidex projekt już się nie uruchomi.

Powodem było to, że zapomniałem wywołać konkretną metodę multidex, która powinna być dodana do Application class i wywoływana przed wszystkim innym.

 MultiDex.install(this);

Postępuj zgodnie z tym samouczkiem, aby poprawnie włączyć multidex. https://developer.android.com/studio/build/multidex.html

Powinieneś dodać te linie do swojej klasy aplikacji

 @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
 2
Author: CROSP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-24 14:50:29

Po wielu miesiącach pracy nad projektem NetBeans, nagle dostałem komunikat NoClassDefFoundError wkrótce po otrzymaniu alertu "Low Memory". Wykonanie czystej przebudowy nie pomogło, ale całkowite zamknięcie Netbeans i ponowne otwarcie projektu nie było raportów o błędach.

 1
Author: Ed S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-14 13:51:35

Ta odpowiedź jest specyficzna dla Javy.lang.NoClassDefFoundError w usłudze :

Mój zespół zauważył ostatnio ten błąd po aktualizacji rpm, który dostarczył usługę. Rpm i oprogramowanie wewnątrz niego zostały zbudowane z Mavena, więc wydawało się, że mamy zależność czasową kompilacji, która po prostu nie została włączona do rpm.

Jednak podczas badania, Klasa, która nie została znaleziona, znajdowała się w tym samym module, co kilka klas w śledzeniu stosu. Co więcej, nie był to moduł, który został niedawno dodany do kompilacji. Te fakty wskazywały, że może to nie być problem zależności Mavena.

Ostateczne rozwiązanie: Uruchom ponownie usługę!

Wygląda na to, że upgrade rpm unieważnił obsługę plików Usługi w pliku JAR. Następnie usługa zobaczyła klasę, która nie została załadowana do pamięci, wyszukała ją wśród listy uchwytów plików jar i nie udało się jej znaleźć, ponieważ plik obsługuje, że można załadować klasę Z został unieważniony. Ponowne uruchomienie usługi zmusiło go do przeładowania wszystkich uchwytów plików, co pozwoliło załadować klasę, która nie została znaleziona w pamięci zaraz po aktualizacji rpm.

Mam nadzieję, że ten konkretny przypadek komuś pomoże.

 1
Author: John Chesshir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-02 16:33:37

Moje dwa grosze w tym łańcuchu:

Upewnij się, że classpathzawiera pełne ścieżki (/home/user/lib/some_lib.jar zamiast ~/lib/some_lib.jar) w przeciwnym razie nadal możesz napotkać błąd NoClassDefFoundError.

 0
Author: khkarens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-17 15:02:50

Dostaję NoClassFoundError, gdy klasy załadowane przez runtime class loader nie mogą uzyskać dostępu do klas już załadowanych przez java rootloader. Ponieważ różne loadery klas są w różnych domenach bezpieczeństwa (zgodnie z Javą), jvm nie pozwoli na rozwiązywanie klas już załadowanych przez rootloader w przestrzeni adresowej uruchomieniowego loadera.

Uruchom program za pomocą ' java-javaagent: tracer.jar [YOUR java ARGS] '

Generuje wyjście pokazujące załadowaną klasę i loader env to załadowało klasę. Bardzo pomocne jest prześledzenie, dlaczego klasy nie można rozwiązać.

// 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
Author: codeDr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-09 12:04:30

To się często zdarza z moimi urządzeniami genymotion. Upewnij się, że masz odpowiednią ilość pamięci na dysku, na którym jest zainstalowany Genymotion.

 0
Author: totteire,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-13 10:55:00

Przydarzyło mi się to w Android Studio.

Rozwiązanie, które zadziałało dla mnie: uruchom ponownie studio.

 0
Author: yanish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-13 11:21:16

Miałem ten sam problem z moim rozwojem Androida przy użyciu Android studio. Podane rozwiązania są ogólne i nie pomogły mi (przynajmniej dla mnie). Po godzinach badań znalazłem następujące rozwiązanie i może pomóc programistom Androida, którzy zajmują się rozwojem za pomocą android studio. zmodyfikuj ustawienie jak poniżej Preferencje - > Build, Execution, Deployment - > Instant Run - > un-check the first option.

Z tą zmianą jestem gotowy do działania. Mam nadzieję, że to pomoże moim dev przyjaciołom.

 0
Author: mask,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-28 17:29:43

Jeśli używasz więcej niż jednego modułu, powinieneś mieć

dexOptions { preDexLibraries = false }

W pliku kompilacji.

 0
Author: Matin Petrulak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-20 08:47:45

Jedno źródło błędu dla tego wyjątku może wynikać z niespójnych definicji dla Proguard, np. brak

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

To wyjaśnia, dlaczego kompilacja i uruchamianie działa poprawnie, biorąc pod uwagę, że jar tam jest, podczas gdy clean & build zawodzi. Pamiętaj, aby zdefiniować nowo dodane biblioteki jar w Ustawieniach proguard!

Zauważ, że komunikaty błędów z Proguard naprawdę nie są zgodne ze standardem, ponieważ łatwo je pomylić z podobnymi komunikatami ant przyjazd, gdy słoika w ogóle nie ma. Tylko na samym dole będzie mała wskazówka proguard w tarapatach. Stąd logiczne jest, aby zacząć szukać tradycyjnych błędów classpath itp., Ale To będzie na próżno.

Oczywiście, wyjątek NoClassDefFound będzie wynikiem podczas uruchamiania np. wynikowego pliku wykonywalnego jar zbudowanego i opartego na braku spójności proguard. Niektórzy nazywają to proguard "Piekło"

 0
Author: carl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-02 20:04:06

Używam wtyczki FileSync dla Eclipse więc mogę debugować na Tomcat & otrzymałem NoClassFoundError ponieważ dodałem wpis synchronizacji dla bin katalogu w obszarze roboczym Eclipse => classes w metadata dla Tomcat ale nie dodałem również synchronizacji dla extlib katalogu w Eclipse =>

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

 0
Author: Stuart Cardall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-06 10:56:16

1) Pierwsza metoda: rozwiązałem ten problem usuwając pewne zależności Klasa usuń je z poniższego kodu ten problem napotkałem na 4.2.2

compile 'com.google.android.gms:play-services-gcm:11.0.4'
compile 'com.google.android.gms:play-services:11.0.4'

Są extra w moim kodzie usunąłem je

 dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile files('libs/ypylibs.jar')
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.google.android.gms:play-services-gcm:11.0.4'
compile 'com.google.android.gms:play-services:11.0.4'
compile 'com.google.android.gms:play-services-ads:11.0.4'
compile 'com.dailymotion.dailymotion-sdk-android:sdk:0.1.12'
compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'commons-io:commons-io:1.3.2'
compile 'com.oguzdev:CircularFloatingActionMenu:1.0.2'
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'

} (2) Metoda: innym sposobem rozwiązania tego problemu jest stworzenie nowej klasy aplikacji

public class MyApplication extends Application {

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

}

Następnie dodaj go do pliku mainfest i w znaczniku aplikacji

 <application
    android:allowBackup="true"
    android:name=".gps.navigation.map.MyApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"></application>

Po tym w głównej aktywności Usuń appcompactactivity, jeśli jest to wymagane i rozszerz klasę z aktywnością będzie wtedy działać.

 0
Author: Najaf Ali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-25 12:31:41

Rozwijam aplikację opartą na Eclipse, znaną również jako RCP (Rich Client Platform) . A ja borykałem się z tym problemem po refaktoryzacji(przeniesienie jednej klasy z wtyczki na nową).

Czyszczenie projektu i aktualizacja Mavena nie pomogły.

Problem został spowodowany przez Bundle-Activator, który nie został zaktualizowany automatycznie. Ręczna aktualizacja aktywatora pakietu w manifeście .MF w Nowej wtyczce naprawił mój problem.

 0
Author: Aleksandr Khomenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-06 08:41:28

Jeśli ostatnio dodałeś obsługę multidex w android studio, TAK:

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

Więc twoim rozwiązaniem jest rozszerzenie z MultiDexApplication zamiast aplikacji

public class MyApp extends MultiDexApplication {
 0
Author: do01,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-30 06:36:14

Sprawdź, czy jeśli masz statyczny handler w swojej klasie, jeśli tak, pls bądź ostrożny, ponieważ statyczny handler może być inicjowany tylko w wątku, który ma looper, awaria może zostać wywołana w ten sposób:

1.najpierw Utwórz instancję klasy w prostym wątku i złap awarię.

2.następnie wywołaj metodę pola klasy w głównym wątku, otrzymasz NoClassDefFoundError.

Oto kod testu:

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

}

W Twojej onkologicznej metodzie głównej aktywność, dodaj część kodu testu:

@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
}

Jest prosty sposób, aby to naprawić za pomocą handlerThread do obsługi init:

private static Handler mHandler;
private static HandlerThread handlerThread = new HandlerThread("newthread");
static {
    handlerThread.start();
    mHandler = new Handler(handlerThread.getLooper(), mHandlerCB);
}
 0
Author: Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-27 13:50:24