今天早上做实验,做的是一个基于RMI的会议议程系统,每次运行都的打开DOS,输入RMIC,再输入RMIRegistry,很麻烦,心里就想着既然这么麻烦,我就写一个程序,一口气都执行了,省的麻烦。
想了两个解决方法,一个就是利用Ant的API,不过这个代码只能RMIC代码,不能执行RMIRegistry,代码如下,有注释,绝对原创!呵呵
-
-
-
-
- private final static String CLASSPATH = "C:/Program Files/Java/jdk1.5.0_04/lib/tools.jar";
-
- public static void main(String[] args) {
-
- if (args.length == 0) {
- System.out.println("没有输入类!");
- System.exit(0);
- }
-
- String classPath = getPath();
- String classname = args[0];
- System.out.println("要编译的类名为:" + classname);
- try {
- Class.forName(classname);
- } catch (ClassNotFoundException e) {
- System.out.println("无此类");
- System.exit(0);
- }
- Project project = new Project();
- Rmic compiler = new Rmic();
- compiler.setProject(project);
- Path path = new Path(compiler.getProject(), CLASSPATH);
- compiler.setClasspath(path);
- FilenameSelector filenameSelector = new FilenameSelector();
- filenameSelector.setName("*.java");
- compiler.addFilename(filenameSelector);
- compiler.setClassname(classname);
- compiler.setStubVersion("1.1");
-
-
- compiler.execute();
- }
这个使用了ANT技术,但是还不能让RMIRegistry启动,所以使用了Runtime这个类,来调用cmd命令,写一个后缀是.cmd的cmd文件
文件内容如下,其实就是你打开DOS输入的命令
cd D:\toNj\rmi\bin //是我的类路径
rmic -v1.1 rmi.server.impl.MeetManager //包名加类名
rmiregistry 9000 //启动9000端口作为名字服务端口
接下来使用这段代码就OK了
- Runtime rt = Runtime.getRuntime();
- Process p = rt.exec("./src/rmic/text.cmd");
- p.waitFor();