软件开发

Ubuntu下Subclipse报failed to load javahl library的解决办法

2011-09-01, Posted in Java, 常用, 操作系统 | 我来说两句 | 查看全文>>

最近买了一T61p,买回后直接安装Ubuntu 10.04,安装Eclipse并安装Subclipse1.6x插件后,使用svn过程中报如下错误:

Failed to load JavaHL Library.
These are the errors that were encountered:
no libsvnjavahl-1 in java.library.path
no svnjavahl-1 in java.library.path
/opt/local/lib/libsvnjavahl-1.0.0.0.dylib: no suitable image found. Did find: /opt/local/lib/libsvnjavahl-1.0.0.0.dylib: mach-o, but wrong architecture

原来是缺少一些关联文件,去subclipse的Wiki看了看,说需要安装libsvn-java,在Ubuntu 下安装很简单,命令如下:

sudo apt-get install libsvn-java

安装完后,这文件在/usr/lib/jni目录下,这个目录并不是eclipse的java.library.path路径之一,所以还需要修改eclipse.ini来告诉eclipse去哪找这个libsvn-java相关的文件.
打开eclipse.ini,在最后行加入如下内容(注意换行)

-Djava.library.path=/usr/lib/jni
标签: ,

使用java实现Windows Explorer左边的常见任务

2011-08-18, Posted in Java | 4 回复 | 查看全文>>

java实际可以做很多事情,只能你能想到的,理论上都可以实现出来,这文章介绍使用java实现Windows Explorer左边的常见任务.这文章原作者不是我,是WilliamChen,他写了很多美文章,我怕哪天他的文章都没有了,都删除了,所以把这些关键的图片,文字及代码存储起来.并在代码中保留原作者的名字.不做任何修改

下面的Enable Animation的JCheckBox可以设置是否使用动画效果。选择上折叠和展开就具有动画效果。
这个组件的类名是dyno.swing.beans.FolderPane。使用比较简单: 查看全文…

标签: ,

Debian6下安装Mysql,Ubuntu下适用

2011-08-08, Posted in 常用, 数据库, 配置 | 我来说两句 | 查看全文>>

Debian下安装软件的方便性就不在提了,这里直接讲Debian下安装MYSQL,请分别执行如下命令:

sudo apt-get update
sudo apt-get installl mysql-server

执行第二条命令的时候,会提示输入root的密码,如下图:

mysqlconfig

mysql config


接下来再确认密码,确认后,提示一堆信息,就安装好了.

标签: , ,

Swing中美化右键菜单JPopupMenu

2011-07-28, Posted in Java | 我来说两句 | 查看全文>>

先看看效果图:

右键菜单

右键菜单

我们首先从Swing的JPopupMenu组件进行扩展,让其接受一个图片,显示在左侧;或者接受一个字符串,动态生成图片后,在显示在左侧。为了避免准备图片的麻烦,我们就以动态生成内存图片为例,编写一个JImagedPopupMenu类。

JImagedPopupMenu在创建时可以接受一个字符串,生成一副内存图片BufferedImage。然后,我们需要覆盖 JComponent的getInsets方法,重新计算Inset的left值,将其在原数值基础上加上图片的宽度,然后返回: 查看全文…

标签: ,

java操作Windows进程

2011-07-19, Posted in Java, 人生百味 | 我来说两句 | 查看全文>>

java对平台的依赖性不太大,所以对系统的一些处理一直不太人性化,比如系统托盘到JDK6才支持,而对进程的处理,如Windows进程,虽然可以很好的操作,但用到这个功能并会的人可能不太多.这里写了一个用java对windows进程操作的例子.

这个类完了了列出所有的进程,杀死指定PID的进程,杀死指定进程名的进程等等,当然有getTaskList这个方法怎么取PID我相信你懂了,只要真正看懂这个类,估计一般需要都可以满足了.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collection;
import java.util.Hashtable;
 
public class JavaWindowsTaskManager {
 
	/**
	 * 杀死一个进程
	 * @param task 进程号
	 *            
	 */
	public static void killTask(Integer pid) {
		try {
			// 取得任务列表
			Hashtable<Integer, WindowsTask> tasks = getTaskList();
			WindowsTask task = tasks.get(pid);
			if(task != null){
				Runtime.getRuntime().exec("tskill " + pid);
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 
	/**
	 * 杀死指定名称的所有进程
	 * @param taskName
	 */
	public static void killTask(String taskName){
		try{
			Hashtable<Integer, WindowsTask> tasks = getTaskList();
			Collection<WindowsTask> allTasks = tasks.values();
			for(WindowsTask task: allTasks){
				if(task.getName().equals(taskName)){
					killTask(task.getPid());
				}
			}
 
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
 
	/**
	 * 返回当前机器的所有进程
	 * 
	 * @return
	 */
	public static Hashtable<Integer, WindowsTask> getTaskList() {
		Hashtable<Integer, WindowsTask> tasks = new Hashtable<Integer, WindowsTask>();
		try {
			Process process = Runtime.getRuntime().exec("taskList");
			InputStreamReader in = new InputStreamReader(process
					.getInputStream(), "GBK");
			BufferedReader reader = new BufferedReader(in);
			String taskInfo = null;
			WindowsTask task = null;
			String tmp = null;
			while ((taskInfo = reader.readLine()) != null) {
				if (taskInfo.trim().length() > 0
						&& (taskInfo.contains("Services") || taskInfo
								.contains("Console"))) {
					System.out.println(taskInfo);
					task = new WindowsTask();
					tmp = taskInfo.substring(0, 26);
					task.setName(tmp.trim());
					tmp = taskInfo.substring(26, 35);
					task.setPid(Integer.valueOf(tmp.trim()));
 
					tmp = taskInfo.substring(35, 52);
					task.setSessionName(tmp.trim());
					tmp = taskInfo.substring(52, 64);
					task.setSessionId(Integer.valueOf(tmp.trim()));
					tmp = taskInfo.substring(64, taskInfo.lastIndexOf("K"));
					tmp = tmp.replaceAll(",", "");
					task.setMem(Long.valueOf(tmp.trim()));
 
					tasks.put(task.getPid(), task);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return tasks;
	}
 
	/**
	 * 启动一个进程,传入的值可以是服务名,也可以是可执行文件的全路径名
	 * 
	 * @param task
	 */
	public static void startTask(String task) {
		try {
			Runtime.getRuntime().exec(task);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
}
 
class WindowsTask {
	// 映像名称
	private String name;
	// PID
	private Integer pid;
	// 会话名
	private String sessionName;
	// 会话编号
	private Integer sessionId;
	// 内存使用
	private long mem;
 
	public String getName() {
		return name;
	}
 
	public void setName(String name) {
		this.name = name;
	}
 
	public Integer getPid() {
		return pid;
	}
 
	public void setPid(Integer pid) {
		this.pid = pid;
	}
 
	public String getSessionName() {
		return sessionName;
	}
 
	public void setSessionName(String sessionName) {
		this.sessionName = sessionName;
	}
 
	public Integer getSessionId() {
		return sessionId;
	}
 
	public void setSessionId(Integer sessionId) {
		this.sessionId = sessionId;
	}
 
	public long getMem() {
		return mem;
	}
 
	public void setMem(long mem) {
		this.mem = mem;
	}
}
标签: ,