当前位置: 首页 > 编程日记 > 正文

java makefile jar包_java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)...

学习makefile教程,ubuntu中文网

1.写一个简单的java项目,不需要外部jar,用的简单的

importjava.util.ArrayList;是可以从CLASSPATH环境变量中找到的,在javac阶段不需要特殊添加-cp

hellocat

612ec33abd5d036a3618018737c6bdf3.png

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)

365877013f82acd37c05644644b45df9.png

代码不方便展示,主要有两个主类,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

就方便了许多

2020b666024cffae923299f5706547cf.png

相关文章:

Python字符编码详解

Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的字符编码的特点,并介绍了在python2.x中如何与编码问题作战 :) 请注意本文关于Python的内容仅适用于2.x&a…

《编写有效用例》读书笔记1

第一章 引言 本章主要介绍用例是什么样子的,并描述为什么不同的项目组需要采用不同 的用例编写风格以及在什么地方使用用例有利于做需求收集工作,也让我们了解 在编写用例之前,需要做哪些准备工作。 用例是代表系统中各个项目相关人员之间就系…

顺序结构,判断结构 if,switch

1:顺序结构:从上往下执行程序代码,为顺序结构 ---------------------------------------------------------------------- 2:判断结构: if 如果 判断是两个选择一个,要么对要么错 if中的条件表达式 返回…

php转换文字Unicode,php实现将中文转为unicode的方法

相关函数说明:iconv命令是用来转换文件的编码方式的,比如它可以将UTF8编码的转换成GB18030的编码,反过来也行。str_split() 函数把字符串分割到数组中。bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再…

kail安装和vmtools安装

因位太费劲我直接把我做的Word文档直接上传了,如果想安装可以下载,我就不麻烦在写一遍了,这个教程主要给小白讲的,大佬请绕过 kail安装教程.docx https://pan.wps.cn/l/sm43o7f 密码:f43341转载于:https://www.cnblogs…

Windows计数器做性能监控(window server 2008服务器)

使用Windows计数器 一、创建数据收集器集 二、创建数据收集器 三、使用数据收集器 1、修改数据收集器的属性 2、手动启用、手动停止数据收集器集 3、计划任务 4、在性能监视器中查看 一、性能监视器 Windows 服务器操作系统提供一个名为“性能监视器”的图形工具,可…

使用浏览器wpf应用程序时访问数据库需要报权限错误的解决方法

在这篇wpf教程中,如果选用浏览器wpf应用程序模板我遇到了 访问数据库时权限不够 不能打开连接 将项目属性的安全性中设置为完全信任后即解决 转载于:https://www.cnblogs.com/langu/archive/2012/03/29/2423620.html

gprs 神奇宝典java,2016联通笔试知识点大全

答:呼叫转移是指用户在工作忙或手机无网络等无法用本机接听电话的情况下,即可将来电设置呼叫转移到另一个号码上,实现号码转移。注:呼叫转移业务目前无需月功能费,用户设置呼叫转移后,如正常接听来电则按照…

内存管理器(二)边界标识法

边界标识算法 前言 首先说明,我们这里的内存管理器主要是以模拟各种内存分配算法为主,从内存申请一片内存然后根据我们所选定的数据结构和算法,实现程序的堆空间的分配,至于内存分配详情我们会在Linux内核内存管理的简单分析中探讨…

XDOC Office Server 开源了,Office文档完美转换为PDF

百度智能云 云生态狂欢季 热门云产品1折起>>> 项目地址:https://gitee.com/xdoc/xoffice XDOC是一个文档自动化平台,提供免费的Office文档生成服务。有用户提出要PDF格式,便于阅读、发布。在尝试了OpenOffice、WPS、微软Office、P…

js的defer属性

js的defer属性说明&#xff1a;<script src"js.js" type"text/javascript defer"defer"/>中defer的作用 给外链的js脚本添加defer"defer" 或 defer"true",使用defer属性可以让脚本在整个页面装载完成之后再解析&#xff0c…

怎么读取java文件,Java怎么读取文件

当前位置:我的异常网 J2SE Java怎么读取文件Java怎么读取文件www.myexceptions.net 网友分享于&#xff1a;2013-12-20 浏览&#xff1a;60次Java如何读取文件?源文件如下,小弟没有学过Java,下面是一段JAVA用RSA加密字符串的程序,命令行的形式是Java PublicExample ABC…

Android环境变量的设置(详细图解版)

Android环境变量的设置&#xff08;详细图解版&#xff09; 转载于:https://www.cnblogs.com/zhujiabin/p/4875182.html

用加密货币连接业务的6种方法

如今&#xff0c;区块链技术和加密货币已经变得更加接近传统业务。在某些情况下&#xff0c;商人们能够找到一种将传 统商业与新技术相结合的有价值的模式。事实上&#xff0c;进入加密货币市场有很多选择&#xff0c;本文将讨论6种主 要的合作方式。 创建加密货币平台是为了完…

extjs grid renderer用法

renderer可以格式化该列显示的数据格式或者按照你自定义的脚本显示最终数据样子&#xff08;我目前是这么理解的&#xff09; 先看下renderer: function()里的参数 var cm new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(),sm,{header:商品名称, dataIndex: name,render…

java50车架适合身高,【经验分享】身高与车架的选择

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼车架的长度&#xff1a;骑在车上&#xff0c;在正常握把时&#xff0c;眼睛、把立前端和前轮花鼓三点一线则说明车架长度正好&#xff0c;否则可通过更换不同长度的把立来调整长度。在Airborne网站上看到了度量身体个部位长度和计算…

从Android界面开发谈起(转)

原文地址&#xff1a;http://blog.csdn.net/nieweilin/article/details/5967815 这篇文章没有打算有一个很好的逻辑去介绍android的某个方面&#xff0c;全盘大致上就是我接触、了解android的ui开发后到现在的一些感想以及个人理解吧&#xff01; 全文可能会涉及到java、androi…

Android笔记之使用LocationManager获取经纬度

LocationManager.getLastKnownLocation(String provider)有可能返回null&#xff0c;概率还挺高 findViewById(R.id.llMain).setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {AndPermission.with(MainActivity.this).runtime().permissi…

Java虚拟机类加载机制

虚拟机类加载机制&#xff1a;虚拟机把描述类的数据从class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型。 Java语言里&#xff0c;类型的加载和连接过程是在程序运行期间完成的。 类的生命周期&#xff…

dw8与mysql的连接,VS2019连接mysql8.0数据库的教程图文详解

1.首先准备好vs2019以及mysql数据库&#xff0c;两者都可以去官网下载&#xff0c;我们直接描述连接过程。2.连接&#xff1a;第一步&#xff1a;打开mysql的安装目录&#xff0c;我本地的安装目录如下&#xff1a;(注意是否有include和lib文件夹)第二步&#xff1a;打开vs2019…

IOS中打开应用实现检查更新的功能

//检查更新页面- (void)Renew{ NSDictionary *infoDic [[NSBundle mainBundle]infoDictionary]; NSString *version [infoDic valueForKey:"CFBundleShortVersionString"]; NSString *ipstr [NSObject deviceIPAdress]; NSString *p…

CSS3边框背景-边框背景(-border-image)

另一个令人兴奋的新特征是边框图片。有了这项功能您可以定义一个图像被用来代替正常的边框的一个组成部分。这项功能实际上是分成了几个属性&#xff1a;边框和边框角的形象。这两个值是&#xff1a; border-image: border-top-imageborder-right-imageborder-bottom-imagebord…

Promise的实例用法

设定函数 function chiFan() {return new Promise(function(resolve, reject) {console.log("chiFan");}) }function shuiJiao() {return new Promise(function(resolve, reject) {console.log("shuiJiao");}) }function daDouDou() {return new Promise(f…

php文件夹列表,php获取文件夹下面的文件列表和文件夹列表

function getDir($dir) {$dirArray[] NULL;if (false ! ($handle opendir( $dir ))) {$i0;while ( false ! ($file readdir( $handle )) ) {//去掉"“.”、“..”以及带“.xxx”后缀的文件if ($file ! "." && $file ! ".."&&!strp…

SharePoint API测试系列——Records.BypassLocks测试

转载请注明出自天外归云的博客园&#xff1a;http://www.cnblogs.com/LanTianYou/ 对于SharePoint中已经是Record的Item&#xff0c;我们想要修改他的属性&#xff0c;这在UI界面是无法完成的&#xff1a; 这时需要通过Records.BypassLocks API来完成。设计一个tool&#xff0c…

我对自动化测试工程师招聘的建议

给以前公司招聘人员做的一个培训:/Files/killmyday/2011年PTA测试培训课件.zip 转载于:https://www.cnblogs.com/killmyday/archive/2012/04/15/2450108.html

解决请求中400的问题

具体报错&#xff1a;2019-03-19 12:01:35,097 - request - DEBUG - json_data: {timestamp: 1552968086846, status: 400, error: Bad Request, exception: org.springframework.http.converter.HttpMessageNotReadableException, message: "JSON parse error: Unrecogni…

java 中lock,java中lock获取锁的四种方法

在java接口中会存放着许多方法&#xff0c;方便线程使用时的直接调用。对于lock接口大家都不陌生&#xff0c;我们已经初步对概念进行了理解。那么在获取锁的方法上想必还不是很清楚。下面我们就lock获取锁的四种方法分别进行概念的介绍&#xff0c;然后就其中的tryLock()方法带…

RadASM的测试工程!

RadASM已经安装完毕了&#xff0c;是否可以正常工作了呢&#xff1f;我们通过创建一个工程来测试一下&#xff0c;下面就是创建这个测试工程的过程&#xff1a; 1&#xff0c; 2&#xff0c; 3&#xff0c; 4&#xff0c; 5&#xff0c; 6&#xff0c; 7&#xff0c; 8&#xf…

单片机 键盘

键盘分类&#xff1a; &#xff08;1&#xff09;编码键盘 键盘上闭合键的识别由专门的硬件编码器实现&#xff0c;并产生键编码号或键值的称为编码键盘&#xff0c;如计算 机键盘。 &#xff08;2&#xff09;非编码键盘 靠软件编程来识别的键盘称为非…