用JAVA程序来编译RMI,启动RMIRegistry

来源:百度文库 编辑:神马文学网 时间:2024/04/29 03:53:08
用JAVA程序来编译RMI,启动RMIRegistry收藏

今天早上做实验,做的是一个基于RMI的会议议程系统,每次运行都的打开DOS,输入RMIC,再输入RMIRegistry,很麻烦,心里就想着既然这么麻烦,我就写一个程序,一口气都执行了,省的麻烦。

想了两个解决方法,一个就是利用Ant的API,不过这个代码只能RMIC代码,不能执行RMIRegistry,代码如下,有注释,绝对原创!呵呵

  1.     /**
  2.      * CLASSPATH指向tools.jar,在运行前,要打开Open Run
  3.      * Dialog,在ClassPath标签页中,再将tools.jar加到Bootstrap Entries
  4.      */
  5.     private final static String CLASSPATH = "C:/Program Files/Java/jdk1.5.0_04/lib/tools.jar";
  6.     public static void main(String[] args) {
  7.         if (args.length == 0) {
  8.             System.out.println("没有输入类!");
  9.             System.exit(0);
  10.         } //
  11.         // 获得当前的类路径 // String classPath = System.getProperty("java.class.path");
  12.         String classPath = getPath();
  13.         String classname = args[0];// 完整的类名
  14.         System.out.println("要编译的类名为:" + classname);
  15.         try {
  16.             Class.forName(classname);
  17.         } catch (ClassNotFoundException e) {
  18.             System.out.println("无此类");
  19.             System.exit(0);
  20.         }
  21.         Project project = new Project();
  22.         Rmic compiler = new Rmic();
  23.         compiler.setProject(project);
  24.         Path path = new Path(compiler.getProject(), CLASSPATH);
  25.         compiler.setClasspath(path);
  26.         FilenameSelector filenameSelector = new FilenameSelector();
  27.         filenameSelector.setName("*.java");
  28.         compiler.addFilename(filenameSelector);
  29.         compiler.setClassname(classname);
  30.         compiler.setStubVersion("1.1");//
  31.         // 1.1就代表 -v1.1,也就是说是jdk1.4 compiler.setBase(new File(classPath));//
  32.         // 就是bin目录 
  33.         compiler.execute();
  34.     }

这个使用了ANT技术,但是还不能让RMIRegistry启动,所以使用了Runtime这个类,来调用cmd命令,写一个后缀是.cmd的cmd文件

文件内容如下,其实就是你打开DOS输入的命令

cd D:\toNj\rmi\bin   //是我的类路径
rmic -v1.1 rmi.server.impl.MeetManager //包名加类名
rmiregistry 9000 //启动9000端口作为名字服务端口

 

接下来使用这段代码就OK了

 

  1. Runtime rt = Runtime.getRuntime();
  2.  Process p = rt.exec("./src/rmic/text.cmd");//传入的参数是文件的URL
  3.  p.waitFor();// 等待,不让子进程结束