java应用程序开发,spark,im开发插件
1.下载Eclipse IDE for Java Developers
2.下载spark源码,导入到eclipse中
如图:
3.将eclipse项目切换到Package Explorer模式
描述:添加一个新的插件,包含文件:java代码,和一些图片,properites文件。
4.在使用ant打包插件时,需要注意,新增的插件需要添加其他的jar,如何在生成的时候,不让jar配置进去,编译会找不到对应的java类的。那添加的jar包要放在build/dist/目录中。重要的jar是spark.jar。
如图:
5.修改ant的build.xml文件,配需打包需要的资源。
代码如下:
<project name="statustip" default="jar" basedir=".."> <property name="plug.dir" value="${basedir}"/> <property name="plug.lib.dir" value="${plug.dir}/build/lib"/> <property name="plug.lib.dist.dir" value="${plug.lib.dir}/dist"/> <property name="classes.dir" value="${basedir}/build/classes"/> <property name="src.dir" value="${plug.dir}/src"/> <property name="java.dir" value="${src.dir}/java"/> <property name="resources.dir" value="${src.dir}/resources"/> <property name="target.dir" value="${basedir}/target"/> <property name="target.lib.dir" value="${basedir}/target/lib"/> <property name="jar.file" value="${target.dir}/lib/plugin-classes.jar"/> <property name="spark.home" value="../../../"/> <property name="spark.libs.dir" value="${spark.home}/target/build/lib"/> <path id="lib.classpath"> <fileset dir="${spark.libs.dir}" includes="**/*.jar, **/*.zip"/> <fileset dir="${plug.lib.dist.dir}" includes="**/*.jar, **/*.zip"/> <fileset dir="${spark.home}/build/lib/dist" includes="**/*.jar, **/*.zip"/> <fileset dir="${spark.home}/build/lib/dist/windows" includes="**/*.jar"/> <fileset dir="${spark.home}/build/lib/dist/mac" includes="**/*.jar"/> </path> <target name="clean" description="Cleans all build related output"> <echo>enter clean process</echo> <delete file="${jar.file}"/> <delete dir="${classes.dir}"/> <delete dir="${target.dir}"/> </target> <target name="compile" description="Compiles plugin source"> <echo>enter compile process</echo> <mkdir dir="${classes.dir}"/> <javac srcdir="${java.dir}" destdir="${classes.dir}" includeantruntime="on" classpath="lib.classpath" source="1.6" debug="false" target="1.6"> <compilerarg line="-encoding UTF-8 "/> <classpath refid="lib.classpath"/> </javac> <copy todir="${classes.dir}"> <fileset dir="${java.dir}" includes="**/*.png"/> <fileset dir="${java.dir}" includes="**/*.gif"/> <fileset dir="${java.dir}" includes="**/*.jpg"/> <fileset dir="${java.dir}" includes="**/*.jpeg"/> <fileset dir="${java.dir}" includes="**/*.properties"/> <fileset dir="${resources.dir}" includes="**/*"/> <fileset dir="${resources.dir}" includes="**/*"/> </copy> </target> <target name="jar" depends="clean, compile" description="Makes a plugin jar"> <echo>enter jar process</echo> <mkdir dir="${target.dir}"/> <mkdir dir="${target.lib.dir}"/> <copy todir="${target.lib.dir}"> <fileset file="${plug.lib.dist.dir}/*.*"/> </copy> <copy todir="${target.dir}"> <fileset file="${plug.dir}/plugin.xml"/> </copy> <copy todir="${target.dir}"> <fileset dir="${plug.dir}"> <include name="**/*.html"/> <include name="**/*.txt"/> </fileset> </copy> <jar basedir="${classes.dir}" file="${jar.file}" update="false"/> <jar file="${target.dir}/statustip-1.0.jar" basedir="${target.dir}"/> <copy todir="${spark.home}/src/commercial"> <fileset file="${target.dir}/statustip-1.0.jar"/> </copy> </target> </project>
描述:要在打包的时候讲图片资源,和properties文件,代码如下:
<copy todir="${classes.dir}"> <fileset dir="${java.dir}" includes="**/*.png"/> <fileset dir="${java.dir}" includes="**/*.gif"/> <fileset dir="${java.dir}" includes="**/*.jpg"/> <fileset dir="${java.dir}" includes="**/*.jpeg"/> <fileset dir="${java.dir}" includes="**/*.properties"/> <fileset dir="${resources.dir}" includes="**/*"/> <fileset dir="${resources.dir}" includes="**/*"/> </copy>放在compile任务中。
6.插件的描述信息,格式如下:
<plugin> <name>OA statustip Plugin</name> <class>com.spark.statustips.StatusTipPlugin</class> <author>yhz</author> <version>1.0</version> <description>OA statusTipPlugin entrance</description> <email>howareyoutodayyuhaizhong@gmail.com</email> <minSparkVersion>2.3.16</minSparkVersion> <java>jdk1.6.0_10</java> </plugin>
描述:给文件中涉及到中文,这个插件解析不出来,程序报错。
7.图片资源,在控件中使用代码:
java图片资源文件的读取代码
package com.spark.statustips; import java.net.URL; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; import javax.swing.ImageIcon; /** * @description 读取StatusTip * @class StatusTipImgResources插件所需要的资源信息 * @author 不了了之之了之 * @date 2013-2-4 */ public class StatusTipImgResources { private static PropertyResourceBundle prb; static ClassLoader cl = StatusTipImgResources.class.getClassLoader(); static { prb = (PropertyResourceBundle) ResourceBundle.getBundle("com/spark/statustips/statustip"); } public static final String getString(String propertyName) { return StatusTipImgResources.prb.getString(propertyName); } public static final ImageIcon getImageIcon(String imageName) { try { final String iconURI = StatusTipImgResources.getString(imageName); final URL imageURL = StatusTipImgResources.cl.getResource(iconURI); return new ImageIcon(imageURL); } catch (Exception ex) { System.out.println(imageName + " not found."); } return null; } public static final URL getURL(String propertyName) { return StatusTipImgResources.cl.getResource(StatusTipImgResources.getString(propertyName)); } }java控件访问资源的代码
// 内部消息 JLabel msgLabel = new JLabel(); msgLabel.setIcon(StatusTipImgResources.getImageIcon("img.message"));
8.properties文件的读取,比如语言支持国际化
StatusTipResources.java
package com.spark.statustips; import java.text.MessageFormat; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; import org.jivesoftware.spark.util.log.Log; /** * @description 读取StatusTip * @class StatusTipResources插件所需要的资源信息 * @author 不了了之之了之 * @date 2013-2-4 */ public class StatusTipResources { private static PropertyResourceBundle prb; static ClassLoader cl = StatusTipResources.class.getClassLoader(); static { prb = (PropertyResourceBundle) ResourceBundle.getBundle("i18n/statustip_i18n_zh_CN"); } public static final String getString(String propertyName) { try { return prb.getString(propertyName); } catch (Exception e) { Log.error(e); return propertyName; } } public static String getString(String propertyName, Object... obj) { String str = prb.getString(propertyName); if (str == null) { return propertyName; } return MessageFormat.format(str, obj); } }
访问代码:
JLabel msgLabel = new JLabel(); msgLabel.setToolTipText(StatusTipResources.getString("lbl.message"));
9.打包的目录如下:
10.将jar放入spark程序目录中
作者:howareyoutodayyhz 发表于2013-2-4 22:42:37 原文链接
阅读:50 评论:0 查看评论