Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

java应用程序开发,spark,im开发插件

$
0
0

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 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>