2008年10月7日

[技术备份]Java跨平台实验运行需要的相关技术

最近记性不大好,老忘,积累了一点点技术方法,备份一下,以备查看。

1. Eclipse下代码自动补齐的快捷键
写完switch后紧接着敲快捷键 Alt+/ 就能看到相关的提示性输入了。今天犯傻了一把,写完“switch ”后怎么弄Alt+/都没有反应,最后不经意删除空格后再弄,一举成功。写在这里,以免再犯。

2. 刀片机上的Linux桌面系统上,如何在计算节点上运行Eclpse
这 个问题的产生,是因为我们Lab的刀片服务器,点击Linux桌面上默认的Eclipse快捷方式时是在主节点上运行的。如果运行大型程序,主节点就全部 占用了,其他人也就不能再使用了。后来想到的方案是进行命令行方式后,ssh node0x转到计算节点node0x上,随后再定位到Eclipse的安装目录下运行./eclipse就可以实现在单独的计算节点上运行程序了。这样 就不会占用主节点的任何资源咯

3. 如何脱离Eclipse环境运行程序?
因为需要运行大规模程序,需要较长的执行时间,如果 一直远程显示Eclipse的界面,一旦网络出现一点点问题,就会让程序半途而废。采用脱离Eclipse环境后就可以在命令行方式下执行程序,再将程序 转到后台执行,也就能够脱离界面执行了,也就能实现偶尔连上服务器看看结果的理想状态了。
闲话少说,来说说如何脱离吧。
首先写好manifest.txt写明相关的依赖关系,举例如下:
--manifest.txt----------------------------------------------------------
Manifest-Version: 1.0
Class-Path: /lib/swt.jar ./libjface.jar ./lib/runtime.jar
Main-Class: jface.dialog.wizard.WizardDialog1
--------------------------------------------------------------------------
第一行指明程序的版本号;第三行指明目标的执行类,由于Eclipse下目录可能出现不能精确指定的问题,可以借用Eclipse的Export中的 browse目标类时得到的路径信息;第二行是依赖的jar文件,这里尤其注意,需要将Class-Path写在第二行,如果写在第三行和Main- Class调换位置,在最终导出的jar文件中会漏掉Class-Path的这一行,不知道原因,这是实践经验 :)
随后运行Eclipse的Export Jar界面,在指定Manifest时需要browse到刚才写好的manifest文件上,否则会自动生成一个可能出现问题的manifest。然后就 能自动导出了。导出之后拷贝放到相关文件夹,再写一个bat(windows)或者sh(linux)文件,里面写好“java - jar test.jar”就可以安安稳稳的在命令行下执行咯。
这里再解释一下什么是Manifest文件。Manifest.mf是打包清单。是打包时的关键性文件,主要是设置执行入口类和支持库的路径,在运行Java应用程序时要根据此文件给出的信息来查找入口类和支持库。
获得这种结果后就可以用相关命令来在命令行下的后台执行咯。

4. screen指令复习
以前在Blog里写过一次,刚才又找了半天,这里温习一下:
a. "screen -ls" 列出当前机器上存在的所有screen会话
b. "screen -r Screen_ID" 将Screen_ID对应的screen会话恢复
c. "C-a d" 暂时断开screen会话. C-a叫做命令字符,表示按住Ctrl键同时按a。此时即可安全的关闭SSH链接了

5. 如何实现Linux下采用管道保留程序运行的屏幕输出结果到文件中,同时还能在屏幕上显示?
这个问题有点奇怪,询问了实验室牛牛师弟msmouse后,得到的精确解决方案是用命令先将屏幕输出保存到文件中,然后用tail -f filename来实现随时更新式的显示.
得到Sandacn兄弟的提点,用tee能简单的实现这个任务。查了一下,tee的用法如下:
common linux command | tee [-a-i] filename
前面的command linux command就是正常的linux命令运行语句,非常简单高效!

哈哈,Java+Eclipse+Linux真好,以后肯定会多多查看这5条Tips的。

3 条评论:

TOTO 说...

try tee

jeffy 说...

感觉还是写个可复用的shell文件比较方便,运行一个java程序只需要修改启动类很参数即可。classpath 一般放在同意目录(相对路径)。而且装cygwin后,几乎不用修改就可以在windows下运行

Bill Lang 说...

嗯,也是一个好主意啊,很多人都说shell很重要,看来需要好好学习一下了啊。谢谢哦