在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. hdu 5073 Galaxy(2014acm鞍山亚洲分部 C)

    主题链接:http://acm.hdu.edu.cn/showproblem.php? pid=5073 Galaxy Time Limit: 2000/1000 MS (Java/Others)   ...

  2. ffplay for mfc 代码备忘录

    在上传一个开源播放器项目ffplay for mfc.它会ffmpeg工程ffplay媒体播放器(ffplay.c)移植到VC环境,而使用MFC做一套接口.它可以完成一个播放器播放的基本流程的视频:解 ...

  3. [windows phone] 教你如何使地图动画缩放

    原文:[windows phone] 教你如何使地图动画缩放 说明 本篇将介绍如何将地图以动画显示呈现,在以下的范例介绍中可以看到有动画跟没动画的差别,如果你的地图还是很单调的话,不仿加上这个设计,让 ...

  4. UDP议定书图像高速传输无损失程序

    下面的程序实现UDP没有图像数据的高速传输协议损耗,测试数据egtest01图片库,实现PC和图像的传输嵌入式结束.变速箱+读写速度可以达到10+M/S.考 server端程序 #include &l ...

  5. A. Initial Bet(Codeforces Round #273)

    A. Initial Bet time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  6. 【v2.x OGE课程 14】 控制使用

    在这里,精灵.动画精灵.button天才.经常使用的文本的使用 一个.相关精灵 1.加入精灵 //创建精灵 Sprite bar_up = new Sprite(400, 0, RegionRes.g ...

  7. 解决iOS app集成共享QQ场地,微信的朋友,朋友等功能圈,不能采用苹果公司的审计问题

    最近提交的应用程序App Store时刻,由于App综合QQ登录.份额QQ场地.微信等功能.被拒绝.很郁闷:在最佳.想想办法,这个问题是可以解决. 当共享平台列表显示.根据推断当前设备被安装在一节Ap ...

  8. OllyDbg 使用注意事项 (十)

    OllyDbg 用笔记 (十) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1kT1ce83 这个程序能够从 ...

  9. 原生javascript与jquery 的比较

    JavaScript的优点和缺点: 优点: 性能:由于JavaScript运行在客户端,节省了web服务器的请求时间和带宽 轻量级的脚本语言,比较容易学习 运行在用户机器上,运行结果和处理相对比较快. ...

  10. [LeetCode328]Odd Even Linked List

    题目: Given a singly linked list, group all odd nodes together followed by the even nodes. Please note ...