zoukankan      html  css  js  c++  java
  • 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
    ");
        }
    }

    Cat.java

    public class Cat{
        Cat()
        {
            this.name = "wali";
            this.age = 2;
        }
        public void run()
        {
            System.out.println("run run run
    ");
        }
        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

    就方便了许多

  • 相关阅读:
    loj#6074. 「2017 山东一轮集训 Day6」子序列(矩阵乘法 dp)
    loj#6073. 「2017 山东一轮集训 Day5」距离(费用流)
    洛谷P5108 仰望半月的夜空(后缀数组)
    二次剩余Cipolla算法学习笔记
    BZOJ5118: Fib数列2(二次剩余)
    BZOJ3122: [Sdoi2013]随机数生成器(BSGS)
    loj#2531. 「CQOI2018」破解 D-H 协议(BSGS)
    noi.ac #289. 电梯(单调队列)
    51nod“省选”模测第二场 C 小朋友的笑话(线段树 set)
    HDU 4770 Lights Against DudelyLights
  • 原文地址:https://www.cnblogs.com/CreatorKou/p/9180935.html
Copyright © 2011-2022 走看看