0

Java code throwing the NoClassDefFoundError:

public class Main {
    public static void main(String[] args) {
        try {
            System.out.println("Starting Compiler4..");
            Compiler4.main(args);
            System.out.println("Compiler4 finished successfuly");

        } catch (Throwable ex) {

            System.out.println("Compiler4 threw an exception: " + ex);
            ex.printStackTrace();

            Throwable cause = ex.getCause();

            if (cause != null) {
                System.out.println("Cause: " + cause);
                cause.printStackTrace();                
            }

            System.out.println("End of Compiler4 exception");
        }
    }

}

Compiler4.java imports the right package name for Disposable class:

import com.intellij.openapi.Disposable;

Classpath:

$ echo $CLASSPATH
./tmp/lcc4/util.jar

Disposable is found in jar:

$ jar -tf ./tmp/lcc4/util.jar | grep Disposable.class
Picked up _JAVA_OPTIONS: -Xmx4g
com/intellij/openapi/Disposable.class

Disposable is found by java command (It's OK that it does not have a main() method):

java com/intellij/openapi/Disposable
Picked up _JAVA_OPTIONS: -Xmx4g
Error: Main method not found in class com.intellij.openapi.Disposable, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

One would think it should run correctly, but it does not:

java -jar lcc4.jar 
Picked up _JAVA_OPTIONS: -Xmx4g
Starting Compiler4..
Compiler4 threw an exception: java.lang.NoClassDefFoundError: com/intellij/openapi/Disposable
java.lang.NoClassDefFoundError: com/intellij/openapi/Disposable
    at com.dreambox.Main.main(Main.java:12)
Caused by: java.lang.ClassNotFoundException: com.intellij.openapi.Disposable
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more
Cause: java.lang.ClassNotFoundException: com.intellij.openapi.Disposable
java.lang.ClassNotFoundException: com.intellij.openapi.Disposable
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.dreambox.Main.main(Main.java:12)
End of Compiler4 exception

I am on Mac.

Irina Rapoport
  • 334
  • 3
  • 10

0 Answers0