在JAVA_HOME/lib以下有两个比較重要的jar文件。tools.jar和dt.jar。

tools.jar在上篇文章中做了简单的介绍。这里来介绍下dt.jar。

在Oracle官方站点搜dt.jar,找到JDK and JRE File Structure这个页面,例如以下

https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/jdkfiles.html

有例如以下的一段话

/jdk1.7.0/lib
Files used by the development tools. Includes tools.jar, which contains non-core classes for support of the tools and utilities in the JDK. Also includes dt.jar,
the DesignTime archive of BeanInfo files that tell interactive development environments (IDE's) how to display the Java components and how to let the developer customize them for an application.翻译一下:

/jdk1.7.0/lib

开发工具使用的文件。包含tools.jar和dt.jar。tools.jar包含支持JDK中各个工具的非核心的类。也包含dt.jar,dt.jar是设计时BeanInfo文件的归档,告诉可交互的开发环境怎样显示Java的组件和怎样让开发人员自己定义他们的应用程序。

dt.jar的解释中有两个点:

1.设计时(DesignTime)是跟执行时(Runtime)对象。简单点说就是一个是敲代码的时候,一个是跑程序的时候。

2.BeanInfo文件,关于这个BeanInfo文件,我们能够打开dt.jar文件看一下。

确实全是xxxBeanInfo的类。再细致看一下。前面的XXX都是Swing的各个组价。

首先查找下BeanInfo是干啥的。

在Oracle官网查找BeanInfo。找下以下的页面,发现BeanInfo是个接口,

https://docs.oracle.com/javase/7/docs/api/java/beans/BeanInfo.html

先看下doc是怎么说的,以下是BeanInfo接口的Java Doc翻译,

public interface BeanInfo

一个bean的详细实现者,假设想提供关于这个bean的明白的信息。他能够提供一个实现了BeanInfo接口的BeanInfo类,来提供关于这个Bean的方法,属性,事件等的明白的信息。

一个Bean的实现者不须要提供一系列完整的明白的信息。

你能够选择你想提供的信息,剩下的信息将通过低级的反射Bean类的方法和应用标准的设计模式自己主动分析来获取。

你有机会提供非常多不同的信息作为XyZDescriptor类的一部分。可是不必惊慌,事实上你仅仅须要提供各个构造方法须要的最小限度的核心信息。

更形象的信息能够去查看BeanInfo接口的几个getter方法。

JDK还提供了一个SimpleBeanInfo类,BeanInfo接口的一个简单的实现。能够简单看一下。

上面提到一句话,tools.jar和dt.jar都是给开发工具用的。以下看一下这套API是怎么用的。

首先写一个MyClass类

package com.highgo.test.beaninfo;

public class MyClass {
private String field1; public String getField1() {
return field1;
} public void setField1(String field1) {
this.field1 = field1;
}
}

在写一个MyClassBeanInfo类。注意这个类的命名,MyClass+BeanInfo

package com.highgo.test.beaninfo;

import java.awt.Image;
import java.beans.BeanDescriptor;
import java.beans.BeanInfo;
import java.beans.EventSetDescriptor;
import java.beans.MethodDescriptor;
import java.beans.PropertyDescriptor; public class MyClassBeanInfo implements BeanInfo{ @Override
public BeanDescriptor getBeanDescriptor() {
// TODO Auto-generated method stub
BeanDescriptor bd = new BeanDescriptor(MyClass.class);
bd.setName("MyName");
bd.setDisplayName("MyDisplayName");
bd.setShortDescription("Hi, My First BeanInfo Test!");
return bd;
} @Override
public EventSetDescriptor[] getEventSetDescriptors() {
// TODO Auto-generated method stub
return new EventSetDescriptor[0];
} @Override
public int getDefaultEventIndex() {
// TODO Auto-generated method stub
return 0;
} @Override
public PropertyDescriptor[] getPropertyDescriptors() {
// TODO Auto-generated method stub
return new PropertyDescriptor[0];
} @Override
public int getDefaultPropertyIndex() {
// TODO Auto-generated method stub
return 0;
} @Override
public MethodDescriptor[] getMethodDescriptors() {
// TODO Auto-generated method stub
return new MethodDescriptor[0];
} @Override
public BeanInfo[] getAdditionalBeanInfo() {
// TODO Auto-generated method stub
return new BeanInfo[0];
} @Override
public Image getIcon(int iconKind) {
// TODO Auto-generated method stub
return null;
} }

測试一下

import com.highgo.test.beaninfo.MyClass;

public class Test{
public static void main(String[] args) throws IntrospectionException {
BeanInfo bi2 = Introspector.getBeanInfo(MyClass.class);
System.out.println(bi2.getBeanDescriptor());
}
}

控制台

java.beans.BeanDescriptor[name=MyName; displayName=MyDisplayName; shortDescription=Hi, My First BeanInfo Test!; beanClass=class com.highgo.test.beaninfo.MyClass]

IDE预计也基本上就是这么用的了。

JDK的dt.jar和Java BeanInfo接口的更多相关文章

  1. 安装java之后,找不到tools.jar 和dt.jar

    可能很多初学者和我一样,在初次接触java开发的过程中,急于看到最终的结果,匆匆在网上下载了jdk之后,点击安装,结果等安装完,开始配置classpath时,发现jdk/lib下面根本就没有 tool ...

  2. linux环境下安装jdk(本文示例是jdk1.6.0_export JAVA_HOME=/usr/java/jdk1.6.0_45 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar45)

    第一步:创建一个文件夹安装jdk(虽说地址一般自定义,但是为了方便查找请按照笔者建议目录 ):/usr/java 将jdk-6u45-linux-x64.bin文件放到   /usr/java 文件夹 ...

  3. JDK8- interface接口可以写方法体了-- 惊 dt.jar包等

    基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. == 一个类实现某个接口,必须重写接口中 ...

  4. Java开发环境配置时的dt.jar与tools.jar是什么(转载)

    你了解dt.jar吗 很多人在初学Java的时候,都要配置环境变量.在配置CLASSPATH的时候,都会加上一个当前目录.,还有两个jar:dt.jar和tools.jar.其实好多人都不了解这两个j ...

  5. JDK环境变量中dt.jar、tools.jar等变量值的作用

    变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; tools.jar: 工具类 库,它跟我们程序中用到的 基础 ...

  6. JDK中rt.jar、tools.jar和dt.jar作用

    dt.jar和tools.jar位于:{Java_Home}/lib/下,而rt.jar位于:{Java_Home}/jre/lib/下,其中: rt.jar是JAVA基础类库,也就是你在java d ...

  7. kafka运行找不到或无法加载主类 Files\Java\jdk1.8.0_131\lib\dt.jar;C:\Program

    最近在研究Flink+kafka解决方案, kafka的安装首先需要安装zookeeper,在安装zookeeper是报错找不到或无法加载主类 Files\Java\jdk1.8.0_131\lib\ ...

  8. 转:linux下配置JDK提示tools.jar/dt.jar权限不够

    原文:http://lkf009.iteye.com/blog/1327912 提示权限不够的原因:CLASSPATH=.;$JAVA_HOME/lib/tools.jar;$JAVA_HOME/li ...

  9. dt.jar设计时rt.jar运行时

    很多人在初学Java的时候,都要配置环境变量.在配置CLASSPATH的时候,都会加上一个当前目录.,还有两个jar:dt.jar和tools.jar.其实好多人都不了解这两个jar的作用,尤其是dt ...

随机推荐

  1. C++ Primer 学习笔记_57_类和数据抽象 --管理指针成员

    复印控制 --管理指针成员 引言: 包括指针的类须要特别注意复制控制.原因是复制指针时.一个带指针成员的指针类 class HasPtr { public: HasPtr(int *p,int i): ...

  2. An Overview of Complex Event Processing

    An Overview of Complex Event Processing 复杂事件处理技术概览(一) 翻译前言:我在理解复杂事件处理(CEP)方面一直有这样的困惑--为什么这种计算模式是有效的, ...

  3. Android在发送带有附件的邮件

    准备好工作了-下载最新的版本号JMail https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release h ...

  4. SQL Server提高并发查询效率

    同事写了个程序用创建多个线程使用ado同时对同个数据库进行相同的查询,涉及2张数据表的联查.当线程数非常多的情况下,读取数据的效率就会变得很慢,例如50个线程同时查询大概3000条数据,查询完成后通过 ...

  5. mvc图片地址

    System.Web.HttpContext.Current.Server.MapPath(@"~\Images\radio1.png");

  6. Lua语言在Wireshark中使用(转)

    1.       检查Wireshark的版本是否支持Lua 打开Wireshark,点击“HelpàAbout Wireshark”菜单,查看弹出的对话框,如果有“with Lua 5.1”表示支持 ...

  7. linux 下上传 datapoint数据到yeelink 修改版本

      /*client.c*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include ...

  8. Java栈的实例-数组和链表两种方法(转)

    一.栈 栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表. (1)通常称插入.删除的这一端为栈顶 (Top),另一端称为栈底 (Bottom). (2)当表中没有元素时称为空栈. ...

  9. logback与Spring、SpringMVC结合使用教程(转) logback good

    摘要:本文主要介绍了如何在spring.springMVC中使用logback 一.logback与Spirng结合使用 1.maven添加引用: <dependency> <gro ...

  10. JSP简单的练习-用户登记表

    <%@ page language="java" import="java.util.*" pageEncoding="gb2312" ...