编译java程序及编译hadoop,hbase 的java测试程序

创建相关目录结构

mkdir -p build/classes build/jar src/oata

vim src/oata/MyHelloWorld.java

package oata;

public class MyHelloWorld {
	public MyHelloWorld(String str) {
		System.out.println("MyHelloWorld " + str); 
	}
}

vim src/oata/HelloWorld.java

package oata;
import oata.MyHelloWorld;
public class HelloWorld{
   public static void main(String[] args){
       MyHelloWorld my = new MyHelloWorld("123\n");
   }
}
#编译java文件,-d为class文件输出目录

javac -d build/classes/ src/oata/HelloWorld.java src/oata/MyHelloWorld.java

(对于有多个java源文件需要编译,可以把java源文件列表写入一个文本文件,比如src.txt,然后javac编译的时候传入 @src.txt文件列表)


#执行编译好的class文件,-cp为-classpath class文件目录,oata为package包名

java -cp build/classes/ oata.HelloWorld

#如果程序执行需要依赖其他jar包的,可以指定jar包

java -cp build/classes/:path-to-jar.jar oata.HelloWorld

java -cp build/classes/:path-to-jar/* oata.HelloWorld


#打包成jar文件,先构造manifest文件,制定Main-Class入口是oata.HellWorld

echo "Main-Class:oata.HelloWorld" > myManifest

#打包jar文件

jar -cfm ./build/jar/HelloWorld.jar myManifest -C build/classes/ . 

#执行打包好的jar文件

java -jar build/jar/HelloWorld.jar


#最后整个目录的结构如下

[root@xxx java]# tree
.
|-- build
|   |-- classes
|   |   `-- oata
|   |       |-- HelloWorld.class
|   |       `-- MyHelloWorld.class
|   `-- jar
|       `-- HelloWorld.jar
|-- myManifest
`-- src
    `-- oata
        |-- HelloWorld.java
        `-- MyHelloWorld.java

6 directories, 6 files




#分割线,下面是编译hadoop,hbase相关java测试程序

-------------------------------------------------------------------------------------------------------------------------------------


export HBASE_CONF_DIR=/usr/local/hbase-0.98.4-hadoop2/conf

export HADOOP_CONF_DIR=/usr/local/hadoop-2.4.0/etc/hadoop


#编译java文件

javac -cp $HBASE_HOME/*:$HBASE_HOME/lib/* Test.java


#执行代码

java -cp .:$HBASE_HOME/*:$HBASE_HOME/lib/* Test


#打包成jar文件

#jar文件运行的时候不像运行class那样可以通过-cp制定第三方库路径,需要通过MANIFEST.MF文件,把MANIFEST.MF文件打包进jar里面


编辑MANIFEST.MF文件内容如下:

Manifest-Version: 1.0
Main-Class: Test
Class-Path: /usr/local/hbase-0.98.4-hadoop2/lib/activation-1.1.jar
 /usr/local/hbase-0.98.4-hadoop2/lib/activation-1.1.jar
 /usr/local/hbase-0.98.4-hadoop2/lib/aopalliance-1.0.jar
 /usr/local/hbase-0.98.4-hadoop2/lib/asm-3.1.jar
 /usr/local/hbase-0.98.4-hadoop2/lib/avro-1.7.4.jar
 ......

 ......


#第三方jar包可以每个一行,每行开头和结尾都需要有一个空格,文件尾部要有2次回车换行


#根据MANIFEST.MF文件内容打包jar

jar cvmf MANIFEST.MF Test.jar Test.class


#执行jar包

#因为MANIFEST.MF文件描述已经在jar包里面,所以运行的时候系统会去找对应的第三方依赖jar包

java -jar Test.jar


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值