JDK的dt.jar和Java BeanInfo接口
在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
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接口的更多相关文章
- 安装java之后,找不到tools.jar 和dt.jar
可能很多初学者和我一样,在初次接触java开发的过程中,急于看到最终的结果,匆匆在网上下载了jdk之后,点击安装,结果等安装完,开始配置classpath时,发现jdk/lib下面根本就没有 tool ...
- 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 文件夹 ...
- JDK8- interface接口可以写方法体了-- 惊 dt.jar包等
基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. == 一个类实现某个接口,必须重写接口中 ...
- Java开发环境配置时的dt.jar与tools.jar是什么(转载)
你了解dt.jar吗 很多人在初学Java的时候,都要配置环境变量.在配置CLASSPATH的时候,都会加上一个当前目录.,还有两个jar:dt.jar和tools.jar.其实好多人都不了解这两个j ...
- JDK环境变量中dt.jar、tools.jar等变量值的作用
变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; tools.jar: 工具类 库,它跟我们程序中用到的 基础 ...
- 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 ...
- kafka运行找不到或无法加载主类 Files\Java\jdk1.8.0_131\lib\dt.jar;C:\Program
最近在研究Flink+kafka解决方案, kafka的安装首先需要安装zookeeper,在安装zookeeper是报错找不到或无法加载主类 Files\Java\jdk1.8.0_131\lib\ ...
- 转:linux下配置JDK提示tools.jar/dt.jar权限不够
原文:http://lkf009.iteye.com/blog/1327912 提示权限不够的原因:CLASSPATH=.;$JAVA_HOME/lib/tools.jar;$JAVA_HOME/li ...
- dt.jar设计时rt.jar运行时
很多人在初学Java的时候,都要配置环境变量.在配置CLASSPATH的时候,都会加上一个当前目录.,还有两个jar:dt.jar和tools.jar.其实好多人都不了解这两个jar的作用,尤其是dt ...
随机推荐
- poj1182食物链(种类并查集)
http://poj.org/problem?id=1182 r[x] = 0 表示x和父亲是同类r[x] = 1 表示x吃父亲r[x] = 2 表示x被父亲吃因为只存在三种动物,且三种动物构成了环形 ...
- 项目构建之maven篇:2.HelloWorld项目构建过程
文件结构说明: 项目构建生命周期: 清理 编译 測试 打包 执行 部署 清理与编译 hello\pom.xml POM:Project Object Model,项目对象模型 pom.xml与ant的 ...
- WebView使用配置文件
录制webview示例使用,以免以后忘记. 布局文件: <WebView android:layout_width="fill_parent" android:layout_ ...
- 程序设计实践C++ 程序代写(QQ 928900200)
程序设计实践 采用C++作为编程语言. 设计开发一个“学生信息”管理系统.该系统模拟数据库管理系统(DBMS)的功能,为用户提供数据存储.查找的能力. 该系统存储的学生信息包括: 学号.姓名.性别.语 ...
- oracle在schema是什么意思?
看来有些人还在schema不明白的真正含义,今天,我再次整理.我希望能帮助. 我们先来看看它们的定义:A schema is a collection of database objects (use ...
- WinForm、wpf、silverlight三者关系
最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分.但是我目前对于.NET的WinForm.wpf.silverlight这三者的关系弄的不是很清楚,一般书中很少介绍wpf和 ...
- GCD code block
在这里积累一些片段,由于备忘录. + (DRClass *)sharedDR{ //创建小黑.正常ap模式仅仅有一个小黑,so static DRClass *aDR = nil; static di ...
- 10令人惊叹的模型的影响HTML5应用程序及源代码
HTML5已经越来越流行起来了.尤其是移动互联网的发展,更是带动了HTML5的迅猛发展,我们也是时候学习HTML5了,以防到时候落伍.今天给大家介绍10款效果惊艳的HTML5应用.方便大家学习,也将应 ...
- iOS结合导航控制器和标签栏控制器
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name=& ...
- Windows Phone 8.1 新功能 - 应用栏控件
2014年4月3日的微软Build 2014 大会上.Windows Phone 8.1 正式公布. 相较于Windows Phone 8.不论从用户还是开发人员的角度,都产生了非常大的变化. 接下来 ...