学习makefile教程,ubuntu中文网
1.写一个简单的java项目,不需要外部jar,用的简单的
importjava.util.ArrayList;是可以从CLASSPATH环境变量中找到的,在javac阶段不需要特殊添加-cp
hellocat
Hellocat.java
importjava.util.ArrayList;importjava.util.Iterator;public classHellocat{public static voidmain(String[] args){
ArrayList list1= newArrayList();
list1.add("one");
list1.add("two");
System.out.println("" + list1.size()+ "个元素");
System.out.println("");
Cat mike= newCat();
mike.run();
System.out.println(mike.name+ "is running over\n");
}
}
Cat.java
public classCat{
Cat()
{this.name = "wali";this.age = 2;
}public voidrun()
{
System.out.println("run run run\n");
}publicString name;public intage;
}
makefile
result : Hellocat.java Cat.java
javac Hellocat.java
clean :
rm-f Hellocat.class Cat.class
执行的时候还得输入java Hellocat,这个项目比较小无所谓,如果遇到大的项目,各种package,需要调整包目录,尤其是需要引入外部jar的,java运行命令需要指出-cp位置
2.比较大的项目,需要引入外部jar(netty4.1.25)
代码不方便展示,主要有两个主类,HelloWorldClient和HelloWorldServer
makefile:
SRCFILES := $(wildcard *.java)
CFLAGS := -cp /home/kourui/netty4125/netty-4.1.25.Final/jar/all-in-one/netty-all-4.1.25.Final.jar
result : $(SRCFILES)
javac $(CFLAGS) HelloWorldServer.java ServerChannelInitializer.java ServerHandler.java
javac $(CFLAGS) HelloWorldClient.java ClientChannelInitializer.java ClientHandler.java
clean :
rm-f *.class
运行脚本:
startserver:(pwd可以忽略,当时是提示用的)
#!/bin/bash
#this script avaiable for starting server
pwd
java -cp ..:/home/kourui/netty4125/netty-4.1.25.Final/jar/all-in-one/netty-all-4.1.25.Final.jar pkg.HelloWorldServer
startclient:
#!/bin/bash
#thisscript starts client
pwd
java-classpath /home/kourui/jmaketest/hellocs:/home/kourui/netty4125/netty-4.1.25.Final/jar/all-in-one/netty-all-4.1.25.Final.jar pkg.HelloWorldClient
这样运行时直接通过命令:
./startserver
./startclient
就方便了许多