怎样才能Eclipse中创建与尚未解决的编译问题的一类?(How can Eclipse creat

2019-09-02 01:55发布

当我尝试编译这个类用javac,我得到一个编译错误,未创建的Test.class。

public class Test {
    public static void main(String[] args) {
        int x = 1L;  // <- this cannot compile
    }
}

但是,当我创建这个类在Eclipse中,我可以看到的Test.class出现在目标/班。 当我尝试从与java.exe的命令行这个班,我得到

异常在线程“主要” java.lang.Error的:未解决的问题编译:
类型不匹配:不能从长转换为int

难道Eclipse中使用它自己的特殊的Java编译器创建一个破碎的.class? java.exe的是如何知道有关的.class complilation问题?

Answer 1:

这是Java编译器如何知道在类的编译错误。

public static void main(String[] paramArrayOfString)
{
    throw new Error("Unresolved compilation problem: \n\tType mismatch: cannot convert from long to int.\n");
}

如果你反编译你的类文件,你可以看到上面main()类文件,编译器已经产生的方法。 这是因为的编译器 ,其使用的Eclipse(Eclipse的Java编译器 )是不一样的标准Java编译器!



Answer 2:

Eclipse中使用IBM编译器具有产生不编译类的选项,以替换错误

throw new Error();

恕我直言,这是非常不好的做法,我已经看到了一些非常贫穷的优质项目使用。 该项目没有完全好几个星期的时间编译。

不同于快速失败战略,尽量减少错误的成本,发现臭虫尽可能晚也最大限度地修复它们的成本。

这个策略只适用,如果你正在编写快速原型代码,即你知道代码将永远不会投入生产。 (这是很难确定,这将是这种情况)



Answer 3:

是的, Eclipse中使用它自己的特殊的编译器; 被称为“欧洲法院”。 从堆栈溢出的问题是什么的javac和Eclipse编译器之间的区别?

一个显着的区别是,Eclipse编译器可以运行的代码,实际上并没有正确编译。 如果代码有错误的块绝然,你的程序将运行正常。 否则,它会抛出一个异常,表明你试图运行的代码无法编译。



文章来源: How can Eclipse create a class with unresolved compilation problems?