When I try to compile this class with javac, I get a compilation error and Test.class is not created.
public class Test {
public static void main(String[] args) {
int x = 1L; // <- this cannot compile
}
}
But when I create this class in Eclipse, I can see that Test.class appears in target/classes. When I try to run this class from command line with java.exe, I get
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from long to int
Does Eclipse use its own special Java compiler to create a broken .class? How does java.exe know about complilation problems in .class?
Best Answer
This is how the Java compiler knows about the compilation error in the class.
If you decompile your class file, you can see the above
main()
method of the class file, which the compiler has generated. This is because of the compiler which Eclipse uses (Eclipse Compiler for Java) is not the same as the standard Java compiler!