我正在深入研究 Java EE 世界。即使在 Java EE 发布了新规范之后,应用服务器制造商也发布了新版本。我知道 Application Server Lib 中存在所有规范实现,并且编译后的 war 文件不需要额外的 jar。除此之外,在开发 JAVA EE 时可以说我们需要遵循依赖关系的 Web 项目
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
</dependency>
查看 javaee-api-6.0.jar 时,您会发现它只有 957KB,换句话说,它由类方法定义组成。
事实上,上面我已经反编译了 javaee-api-6.0.jar 中的一个类文件,这是一个:我期望所有的类文件都应该是接口和抽象的。但事实并非如此。我想了解的是编译器如何允许此类具有方法定义的Java类:
public ActivationDataFlavor(Class paramClass, String paramString1, String paramString2);
反编译的类文件:
package javax.activation;
import java.awt.datatransfer.DataFlavor;
public class ActivationDataFlavor extends DataFlavor
{
private String mimeType;
private MimeType mimeObject;
private String humanPresentableName;
private Class representationClass;
public ActivationDataFlavor(Class paramClass, String paramString1, String paramString2);
public ActivationDataFlavor(Class paramClass, String paramString);
public ActivationDataFlavor(String paramString1, String paramString2);
public String getMimeType();
我的 Java 编译器给出了你所期望的错误。
我不认为 java 编译器不能正常工作,因为所有的类文件只有 1KB。