【发布时间】:2013-07-14 13:25:21
【问题描述】:
我正在深入研究 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。
【问题讨论】:
-
这很可能是您使用的反编译器的问题
-
我不这么认为,看看更新的图片
标签: java jakarta-ee java-ee-6