java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)
学习makefile教程,ubuntu中文网
1.写一个简单的java项目,不需要外部jar,用的简单的
import java.util.ArrayList;是可以从CLASSPATH环境变量中找到的,在javac阶段不需要特殊添加-cp
hellocat
Hellocat.java
import java.util.ArrayList; import java.util.Iterator; public class Hellocat{ public static void main(String[] args){ ArrayList list1 = new ArrayList(); list1.add("one"); list1.add("two"); System.out.println("<--list1中共有>" + list1.size()+ "个元素"); System.out.println("<--list1中的内容:" + list1 + "-->"); Cat mike = new Cat(); mike.run(); System.out.println(mike.name + "is running over\n"); } }
Cat.java
public class Cat{ Cat() { this.name = "wali"; this.age = 2; } public void run() { System.out.println("run run run\n"); } public String name; public int age; }
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 #this script 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
就方便了许多
posted on 2018-06-14 00:12 CreatorKou 阅读(740) 评论(0) 编辑 收藏 举报