Cómo resolver java.lang.NoClassDefFoundError?


He probado tanto el ejemplo en Oracle Java Tutoriales. Ambos compilan bien, pero en tiempo de ejecución, ambos vienen con este error:

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

Creo que podría tener el archivo Main.java en la carpeta incorrecta. Aquí está la jerarquía de directorios:

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

Y aquí está 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);
    }
}

¿Qué estoy haciendo mal aquí?

UPDATE

Después de poner la clase Main en el paquete graphics (le agregué package graphics;), establezca el classpath en " _test" (carpeta que contiene gráficos), lo compiló, y lo ejecutó usando java graphics.Main (desde la línea de comandos), funcionó.

ACTUALIZACIÓN realmente tardía#2

No estaba usando Eclipse (solo Notepad++ y el JDK), y la actualización anterior resolvió mi problema. Sin embargo, parece que muchas de estas respuestas son para Eclipse e IntelliJ, pero tienen conceptos similares.

Author: Yu Hao, 2013-07-31

23 answers

Después de compilar su código, termina con archivos .class para cada clase en su programa. Estos archivos binarios son el bytecode que Java interpreta para ejecutar su programa. El NoClassDefFoundError indica que el classloader (en este caso java.net.URLClassLoader), que es responsable de cargar clases dinámicamente, no puede encontrar el archivo .class para la clase que está tratando de usar.

Su código no se compilaría si las clases requeridas no estuvieran presentes (a menos que las clases estén cargadas con reflexión), por lo que generalmente esta excepción significa que su classpath no incluye las clases requeridas. Recuerde que el classloader (específicamente java.net.URLClassLoader) buscará clases en el paquete a.b.c en la carpeta a/b/c/ en cada entrada de su classpath. NoClassDefFoundError también puede indicar que le falta una dependencia transitiva de a .archivo jar que has compilado contra y que estás tratando de usar.

Por ejemplo, si tuviera una clase com.example.Foo, después de compilar tendría un archivo de clase Foo.class. Digamos, por ejemplo, su trabajo el directorio es .../project/. Ese archivo de clase debe ser colocado en .../project/com/example, y usted establecería su classpath a .../project/.

Nota al margen: Recomendaría aprovechar las increíbles herramientas que existen para los lenguajes Java y JVM. IDE modernos como Eclipse y herramientas de gestión de IDEA y construcción como Maven o Gradle le ayudará a no tener que preocuparse por classpaths (tanto) y centrarse en el código! Dicho esto, este enlace explica cómo establecer el classpath cuando se ejecuta en el comando alinear.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-01 06:55:03

Me gustaría corregir la perspectiva de otros sobre NoClassDefFoundError.

NoClassDefFoundError puede ocurrir por múltiples razones como

  1. ClassNotFoundException -- .class not found for that referenced class irrespective of whether it is available at compile time or not(i.e base/child class).
  2. Archivo de clase localizado, pero con excepción al inicializar variables estáticas
  3. Archivo de clase localizado, Excepción levantada al inicializar bloques estáticos

En la pregunta original, fue el primer caso que se puede corregir estableciendo CLASSPATH al archivo jar de clases referenciado o a su carpeta de paquetes.

¿Qué significa decir "disponible en tiempo de compilación"?

  • La clase referenciada se usa en el código.
    Eg: Dos clases, A y B (extiende A). Si B es referenciado directamente en el código, es disponible en tiempo de compilación, es decir, A a = new B ();

Lo que significa decir "no disponible en tiempo de compilación"?

  • La clase de tiempo de compilación y la clase de tiempo de ejecución son diferentes, es decir, por ejemplo, la clase base se carga usando classname de la clase hija, por ejemplo Clase.forName ("classname")
    Eg: Dos clases, A y B (extiende A). El código tiene
    A a = Clase.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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-14 17:40:21

NoClassDefFoundError significa que la clase está presente en el classpath en Compile time, pero no existe en el classpath en Runtime.

Si estás usando Eclipse, asegúrate de tener el shapes, linepoints y el spaceobjects como entradas en el archivo .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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-31 15:02:26

Si tienes uno de estos errores al compilar y ejecutar:

  • NoClassDefFoundError

  • Error: No se pudo encontrar o cargar la clase principal hello

  • Excepción en el hilo "main" java.lang.NoClassDefFoundError: javaTest/test / hello ( nombre incorrecto: test / hello) en java.lang.ClassLoader.defineClass1(Método Nativo) en java.lang.ClassLoader.defineClass(Fuente Desconocida) en java.seguridad.Cargador de seguridad.defineClass(Fuente Desconocida) en java.net.URLClassLoader.defineClass(Fuente Desconocida) en java.net.URLClassLoader.acceso$100(Fuente Desconocida) en java.net.URLClassLoader$1.ejecutar(Fuente Desconocida) en java.net.URLClassLoader$1.ejecutar(Fuente Desconocida) en java.seguridad.AccessController.doPrivileged(Método Nativo) en java.net.URLClassLoader.findClass(Fuente Desconocida) en java.lang.ClassLoader.loadClass(Fuente Desconocida) al sol.misc.Launcher App AppClassLoader.loadClass(Fuente Desconocida) en Java.lang.ClassLoader.loadClass(Fuente Desconocida) al sol.lanzador.LauncherHelper.checkAndLoadMain (Fuente Desconocida)

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

El problema está principalmente en la organización de paquetes. Debe organizar sus clases en carpetas correctamente con respecto a las clasificaciones de paquetes en su código fuente.

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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-07 11:23:51
java.lang.NoClassDefFoundError

Indica que algo fue encontrado en tiempo de compilaciónpero no en tiempo de ejecución. tal vez solo tienes que añadirlo al classpath.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-31 15:03:00

No se produce ninguna Excepción de Definición de clase cuando la clase deseada no se encuentra en la ruta de acceso de la clase. Clase en Tiempo de compilación: La clase se generó desde el compilador Java, Pero De Alguna Manera en Tiempo de ejecución no se encuentra la Clase Dependiente.

Veamos un Ejemplo Simple:

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

Ahora supongamos que los dos códigos Fuente de Java anteriores se colocan en alguna carpeta digamos "NoClassDefinationFoundExceptionDemo"

Ahora abra una shell (Suponiendo que Java ya está configuración correcta)

  1. Ir a la carpeta "NoClassDefinationFoundExceptionDemo"
  2. Compilar Archivos Fuente Java javac ClassB javac ClassA
  3. Ambos archivos se compilan con éxito y se generan archivos de clase en la misma carpeta como ClassA.clase y ClassB.clase
  4. Ahora, ya que estamos pasando ClassPath al directorio de trabajo actual por lo tanto ejecutamos el siguiente comando java-cp . ClassA y funcionó con Éxito y verá la Salida en la pantalla
  5. Ahora digamos que eliminaste ClassB.archivo de clase del Directorio Actual. y ahora ejecuta el comando de nuevo. java-cp . ClassA Ahora te recibirá con NoClassDefFoundException. como ClassB que es una dependencia para ClassA no se encuentra en el classpath (es decir, en el directorio de trabajo actual).
 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-22 16:28:32

NoClassDefFoundError en Java:

Definición:

NoClassDefFoundError vendrá si una clase estuvo presente durante el tiempo de compilación pero no está disponible en java classpath durante el tiempo de ejecución. Normalmente verá la siguiente línea en el registro cuando obtenga NoClassDefFoundError: Excepción en el hilo "main" java.lang.NoClassDefFoundError

Posibles causas:

  1. La clase no está disponible en Java Classpath.

  2. Usted puede ser ejecutar el programa usando el comando jar y la clase no se definió en el atributo ClassPath del archivo de manifiesto.

  3. Cualquier script de inicio está sobreescribiendo la variable de entorno Classpath.

  4. Porque NoClassDefFoundError es una subclase de java.lang.LinkageError también puede venir si una de sus dependencias como la biblioteca nativa puede no estar disponible.

  5. Busca Java.lang.ExceptionInInitializerError en su archivo de registro. NoClassDefFoundError debido a la falla de la inicialización estática es bastante común.

  6. Si está trabajando en el entorno J2EE que la visibilidad de la Clase entre múltiples Classloader también puede causar java.lang.NoClassDefFoundError, consulte la sección ejemplos y escenarios para una discusión detallada.

Posibles resoluciones:

  1. Compruebe que todas las clases Java necesarias están incluidas en el classpath de la aplicación. El error más común es no incluir todas las clases necesarias, antes de comenzar a ejecutar una aplicación Java que tiene dependencias en algunas bibliotecas externas.

  2. La ruta de clase de la aplicación es correcta, pero la variable de entorno Classpath se sobrescribe antes de la ejecución de la aplicación.

  3. Verifique que el mencionado ExceptionInInitializerError no aparezca en el seguimiento de la pila de su aplicación.

Recursos:

3 formas de resolver java.lang.NoClassDefFoundError en Java J2EE

Java.lang.NoClassDefFoundError - Cómo resolver ningún Error de Clase Def Encontrado

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-08 08:19:18

Si su proyecto está en un paquete como com.blahcode y su clase se llama Main, los archivos compilados pueden salir en una estructura de directorios como ./out/com/blahcode/Main.class. Esto es especialmente cierto para la IDEA IntelliJ.

Cuando intenta ejecutar desde un shell o cmd, necesita cd a lo que contiene com como un subdirectorio.

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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-27 23:32:39

Hoy me he enfrentado al problema. Tengo un proyecto de Android y después de habilitar multidex el proyecto ya no se iniciaría.

La razón fue que había olvidado llamar al método multidex específico que debería agregarse al Application class e invocarse antes que todo lo demás.

 MultiDex.install(this);

Siga este tutorial para habilitar multidex correctamente. https://developer.android.com/studio/build/multidex.html

Debe agregar estas líneas a su clase de aplicación

 @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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-24 14:50:29

Después de trabajar en un proyecto NetBeans durante muchos meses, de repente recibí el mensaje NoClassDefFoundError poco después de recibir una alerta de "Memoria Baja". Hacer una reconstrucción limpia no ayudó, pero cerrar Netbeans por completo y reabrir el proyecto no hubo informes de errores.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-14 13:51:35

Esta respuesta es específica de un java.lang.NoClassDefFoundError sucediendo en un servicio :

Mi equipo vio recientemente este error después de actualizar un rpm que suministraba un servicio. El rpm y el software dentro de él habían sido construidos con Maven, por lo que parecía que teníamos una dependencia de tiempo de compilación que simplemente no se había incluido en el rpm.

Sin embargo, al investigar, la clase que no se encontró estaba en el mismo módulo que varias de las clases en el seguimiento de la pila. Además, este no era un módulo que solo se había agregado recientemente a la compilación. Estos hechos indicaron que podría no ser un problema de dependencia Maven.

La solución final: ¡Reinicie el servicio!

Parece que la actualización rpm invalidó el controlador de archivo del servicio en el archivo jar subyacente. El servicio luego vio una clase que no se había cargado en memoria, la buscó entre su lista de manejadores de archivos jar, y no pudo encontrarla porque el manejador de archivos que podría cargar la clase de había sido invalidado. Reiniciar el servicio lo obligó a recargar todos sus manejadores de archivos, lo que le permitió cargar esa clase que no se había encontrado en la memoria justo después de la actualización de rpm.

Espero que ese caso específico ayude a alguien.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-02 16:33:37

Mis dos centavos en esta cadena:

Asegúrese de que el classpathcontiene rutas completas (/home/user/lib/some_lib.jar en lugar de ~/lib/some_lib.jar) de lo contrario, todavía puede enfrentar el error 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-17 15:02:50

Obtengo NoClassFoundError cuando las clases cargadas por el cargador de clases en tiempo de ejecución no pueden acceder a las clases ya cargadas por el rootloader de java. Debido a que los diferentes cargadores de clases están en diferentes dominios de seguridad (según java), la jvm no permitirá que las clases ya cargadas por el rootloader se resuelvan en el espacio de direcciones del cargador de tiempo de ejecución.

Ejecute su programa con 'java-javaagent:tracer.jar [SU java ARGS] '

Produce una salida que muestra la clase cargada, y el eso llenó la clase. Es muy útil rastrear por qué una clase no se puede resolver.

// 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-09 12:04:30

Sucede mucho con mis dispositivos genymotion. Asegúrese de tener una buena cantidad de memoria disponible en su unidad donde está instalado 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-13 10:55:00

Me pasó en Android Studio.

La solución que funcionó para mí: sólo reinicia el estudio.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-13 11:21:16

Tuve el mismo problema con mi desarrollo de Android usando Android Studio. Las soluciones proporcionadas son generales y no me ayudaron (al menos para mí). Después de horas de investigación encontré la siguiente solución y puede ayudar a los desarrolladores de Android que están haciendo el desarrollo utilizando android Studio. modifique la configuración de la siguiente Preferencias- > Compilación, Ejecución, Implementación - > Ejecución instantánea - > desmarcar la primera opción.

Con este cambio estoy en marcha. Espero que esto ayude a mis amigos dev.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-28 17:29:43

Si está utilizando más de un módulo, debe tener

dexOptions { preDexLibraries = false }

En tu archivo de compilación.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-20 08:47:45

Una fuente de error para esta excepción podría provenir de definiciones inconsistentes para Proguard, por ejemplo, una falta

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

Esto explica por qué la compilación y ejecución funciona bien, dado que el jar está allí, mientras que clean & build falla. Recuerde definir las bibliotecas jar recién agregadas en proguard setup!

Tenga en cuenta que los mensajes de error de Proguard realmente no están a la altura del estándar, ya que se confunden fácilmente con mensajes ant similares llegando cuando el frasco no está allí en absoluto. Sólo en el fondo habrá un pequeño indicio de proguard en problemas. Por lo tanto, es bastante lógico comenzar a buscar errores tradicionales de classpath, etc., pero esto será en vano.

Evidentemente, la excepción NoClassDefFound serán los resultados cuando se ejecuta, por ejemplo, el jar ejecutable resultante construido y basado en una falta de consistencia proguard. Algunos lo llaman proguard "Infierno"

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-02 20:04:06

Utilizo el complemento FileSync para Eclipse para poder vivir la depuración en Tomcat y recibí NoClassFoundError porque había agregado una entrada de sincronización para el directorio bin en el espacio de trabajo de Eclipse => classes en el metadata para Tomcat, pero no había agregado una sincronización de carpeta para el directorio extlib en 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-06 10:56:16

1) Primer método: He resuelto este problema mediante la eliminación de algunas Dependencias clase eliminar estos de abajo código este problema me enfrenté en 4.2.2

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

Estos son extra en mi código los eliminé

 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) Método: Otra forma de resolver este problema es hacer una nueva clase Myapplication

public class MyApplication extends Application {

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

}

Luego agrégalo en el archivo mainfest y en la etiqueta de la aplicación

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

Después de esto en su actividad principal, elimine appcompactactivity si es necesario y extienda su clase con la actividad funcionará entonces.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-25 12:31:41

Estoy desarrollando una aplicación basada en Eclipse también conocida como RCP (Rich Client Platform). Y he estado enfrentando este problema después de refactorizar (mover una clase de un plugin a uno nuevo).

Limpiar el proyecto y la actualización de Maven no ayudó.

El problema fue causado por el Activador de paquetes que no se ha actualizado automáticamente. Actualización manual del Activador del paquete bajo el MANIFIESTO .MF en el nuevo plugin ha solucionado mi problema.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-06 08:41:28

Si recientemente agregaste soporte multidex en android studio de esta manera:

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

Así que su solución es simplemente extender Desde MultiDexApplication en lugar de Application

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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-30 06:36:14

Compruebe que si tiene un manejador estático en su clase, si es así, por favor tenga cuidado, porque el manejador estático solo se puede iniciar en un hilo que tiene un looper, el bloqueo se puede activar de esta manera:

1.en primer lugar, cree la instancia de class en un subproceso simple y atrape el bloqueo.

2.a continuación, llame al método de campo de la clase en el hilo principal, obtendrá el NoClassDefFoundError.

Aquí está el código de prueba:

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

}

En su método onCrete de Principal actividad, añadir parte de código de prueba:

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

Hay una manera sencilla de arreglarlo usando un HandlerThread to init handler:

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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-27 13:50:24