软件开发
Ubuntu下Subclipse报failed to load javahl library的解决办法
2011-09-01, Nortan 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, Nortan Posted in Java | 4 回复 | 查看全文>>
java实际可以做很多事情,只能你能想到的,理论上都可以实现出来,这文章介绍使用java实现Windows Explorer左边的常见任务.这文章原作者不是我,是WilliamChen,他写了很多美文章,我怕哪天他的文章都没有了,都删除了,所以把这些关键的图片,文字及代码存储起来.并在代码中保留原作者的名字.不做任何修改

下面的Enable Animation的JCheckBox可以设置是否使用动画效果。选择上折叠和展开就具有动画效果。
这个组件的类名是dyno.swing.beans.FolderPane。使用比较简单: 查看全文…
Debian6下安装Mysql,Ubuntu下适用
2011-08-08, Nortan Posted in 常用, 数据库, 配置 | 我来说两句 | 查看全文>>
Debian下安装软件的方便性就不在提了,这里直接讲Debian下安装MYSQL,请分别执行如下命令:
sudo apt-get update sudo apt-get installl mysql-server
执行第二条命令的时候,会提示输入root的密码,如下图:

mysql config
接下来再确认密码,确认后,提示一堆信息,就安装好了.
Swing中美化右键菜单JPopupMenu
2011-07-28, Nortan Posted in Java | 我来说两句 | 查看全文>>
先看看效果图:
我们首先从Swing的JPopupMenu组件进行扩展,让其接受一个图片,显示在左侧;或者接受一个字符串,动态生成图片后,在显示在左侧。为了避免准备图片的麻烦,我们就以动态生成内存图片为例,编写一个JImagedPopupMenu类。
JImagedPopupMenu在创建时可以接受一个字符串,生成一副内存图片BufferedImage。然后,我们需要覆盖 JComponent的getInsets方法,重新计算Inset的left值,将其在原数值基础上加上图片的宽度,然后返回: 查看全文…
java操作Windows进程
2011-07-19, Nortan 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; } }
