逃离IDE

上周四的时候滕云和你们分享了一期郑大晔校,主题就是“逃离IDE!!!”java

 

初始题目是这样的:写一个server和一个client位于不用的package下,其中server会提供一个方法打印出Hello world,而client中有main函数调用server中的方法。vim

 

想一下,若是是平时的作法,用IDE + Maven为咱们建立出标准的工程目录;结合IDE提供的各类补齐等功能轻松写出;一键编译、运行。各类轻松,,,编辑器

那么题目的要求是:不能使用IDE函数

 

Step1:建立工程目录:1)在经常使用工程目录下建立目录“runJavaWithoutIde”,期间用到的命令包括各类cd, cd.., ls, tree, mkdir runJavaWithoutIde;ui

2)在runJavaWithoutIde目录下建立src文件夹,并在其中建立server和client两个目录。spa

Step2:编写Server与Client java文件:1)在server目录下,vim Server.java进入vim编辑器;press i进入编辑模式;写以下代码并按‘esc’ 推出编辑模式,按“shift+:”进入命令模式,并输入wq表示write and quit.code

package server;

public class Server {
   public void sayHello() {
     System.out.println("Hello World");
  }
}

2) 在client目录下,经过类似过程写出Client以下:server

package client;
import server.*;

public class Client {
    public static void main(Sting[] args) {
        Server server = new Server();
        server.sayHello();
    }
}

Step3: 回到src目录下,使用javac client/Client.java进行编译。结果是src/client下包括Client.java, Client.class; 同时src/server下包括Server.java, Server.class.blog

为何呢,看起来只编译了Client.java呀,这是由于Client中import了server,所以在对client进行编译的同时,server的编译也完成了。it

Step4: 在src目录下,使用java client.Client进行执行,看到Hello World出现。

 

结束!!!

 

但事情根本木有这样顺利:本来有IDE为咱们作的事情木有,所以情况百出,package名要用小写,import时候使用packageName.*来引入某个包内的全部内容;class须要为public才能被package外的类使用;还有main函数的签名(哈哈);本来的sout变成了System.out.println(); 

 

除了这些,在使用javac编译的时候,在使用java进行运行的时候,╮(╯▽╰)╭

 

事情也能够有其余花样,

花样1: Step1. 删除以前的编译结果(rm);Step2. 在src目录的隔壁创建output目录,为空;Step3. 在src目录下运行javac -d ../output client/Client.java,观察结果编译出的class文件没有出如今以前的src/client, src/server目录下,而是出如今了output/client, output/server目录下。也就是说-d(destination)为咱们指定了编译结果的存放位置。Step4. 在src目录下运行java -cp ../output client.Client则成功打印出Hello World,这里的-cp 用于指定classpath,默认状况下的classpath为当前目录,此时因为编译结果存放在output目录中,所以须要指定。

 

花样2:将server达成jar包,是的client依赖于jar包

Step1. 在output目录下,将server.class连同其外面的package一块儿打成jar包,使用命令jar -cf server.jar server/; Step2. 删除output/server中的编译结果; Step3. 在src目录下,使用java -cp ../output:../output/server.jar client.Client, 可看到成功打印出Hello World。

使用jar -tf server.jar能够看到jar包中包含的内容。

 

就是这样啦,时间不早了,回家吃西瓜,喝酸奶,睡觉啦~\(≧▽≦)/~啦啦啦

相关文章
相关标签/搜索