java 考试试题002

命令行使用接口:
预备知识1:类加载机制和反射机制,这是JAVA本身的基础知识,不需要再单独介绍。
题目内容:实现一个命令行控制的插件管理系统,它有一系列的控制命令可以对插件进行控制。

图片说明见附件;

 

详细说明:
1、所有的插件实现类都包含有“public void call(int param)”方法;
2、所有的插件都是以jar包的形式提供,jar包文件中包含有插件描述文件plugin.xml,jar包文件的结构如下:(参见随试题一起提供的附件文件plugin1.jar和plugin2.jar)
[xxx_plugin.jar]
 ├-[com]
 │ └-[xxx]
 │    ├-[MyPlugin.class]
 │    └-[Other.class]
 └-[META-INF]
    ├-[MANIFEST.MF]
    └-[plugin.xml]
3、plugin.xml文件结构如下:
<?xml version="1.0" encoding="UTF-8" ?>
<plugin name="MyPlugin">
<author><person>LiTian</person><email>[email protected]</email>
<site>http://www.huawei.com</site></author><item>  <key>plugin</key><!--插件的具体实现类-->
<value>com.xxx.MyPlugin</value></item><item><key>version</key>
<value>1.0</value></item><item><key>date</key><value>2009-04-25</value>
</item></plugin>
4、各个插件jar包之间的类名可能会重名;
5、程序实现过程中使用到的错误提示信息可以从java2.Constants类中获取;

 

-----------

命令行使用接口:
程序启动方式为:java PluginLoader
“PluginLoader”参数是你将要实现的主程序类名,该类有main方法public static void main(String[] args),是程序的入口;
程序启动后处于等待命令接受状态,它可以接收的命令参见下表(红色为命令,蓝色为参数,程序处理中的各种结果需要在界面上打印信息,具体信息请引用Constants类):
命令格式 备注
add plugin:加载一个插件,plugin为jar包路径(可为绝对或相对路径),需要判断文件是否存在,文件格式是否正确,组件是否已经加载过,加载成功则打印成功信息
remove pluginName:删除一个插件,pluginName为插件的名称,需要检查插件是否存在,删除成功提示信息
call pluginName param:调用一个插件(调用插件的call方法),pluginName为插件的名称,param为调用call方法时传递的整数型参数,需要检查插件是否存在,参数类型是否正确
list:列出当前系统中已经加载的所有插件,逐行列出插件名称即可,没有插件则不打印任何信息
info pluginName:列出插件的基本信息,pluginName为插件的名称,使用Key:Value的形式输出plugin.xml中定义的所有属性,见后面的输出样例
exit:退出本程序
注意:命令名称不区分大小写,命令和参数之间使用空格分开,命令前后可包含多个空格,不符合要求的命令打印“命令格式错误”。

------------

控制台输出:命令提示符使用两个大于号“>>”,下面为一个命令行交互的过程输出: >>list >>add d:\plugin1.jar 插件加载成功 >>add d:\plugin2.jar 插件加载成功 >>add d:\plugin3.jar 文件不存在 >>list HelloPlugin HiPlugin >> info HiPlugin name:HiPlugin person:Petter email:[email protected] site:http://www.huawei.com plugin:com.huawei.SayHi version:2.0 date:2009-04-24 >>call HiPlugin 33 Hi 33! >>remove HiPlugin 插件卸载成功 >>list HelloPlugin >>add d:\plugin1.jar 插件已存在 >>exit

---------

涉及到的考点:
1、XML文件解析
2、类加载和反射
参考提示1:使用JDK自带的DOM方式解析XML文件
        DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
        DocumentBuilder dombuilder = domfac.newDocumentBuilder();;
        Document doc  = dombuilder.parse("要解析的XML文件");
        // 获取要节点对象
        Element root = doc.getDocumentElement();
        // 关于Element的各种操作请参考JDK API文档
参考提示2:Jar包读取
JarFile jar = new JarFile("要解析的jar文件");
InputStream in =
jar.getInputStream(jar.getEntry("META-INF/plugin.xml")
);

 

 

你可能感兴趣的:(java,jdk,xml)