主要要讲的有3个
java中的package是干啥的?
工作了好几年的都一定真正理解java里面的package关键字,这里在写MapReduce需要进行打包的时候突然发现命令行下打包运行居然不会了,这。。。。尴尬极了,都不敢说自己是java开发的。
首先来看一个很简单的例子
Hello.java
public class Hello { public static void main(String[] args) { System.out.println("hello....... "); } }
那么这个在命令行下如何编译运行捏?
javac Hello.java
然后
java Hello
注意:这里要运行的话要有主方法,而且主方法一定要规范,不然就会报错。
现在我们给它加一个包,现在的文件名是HelloP.java,P代表了带package的。
HelloP.java
package com.tuhooo; public class HelloP { public static void main(String[] args) { System.out.println("hello....... "); } }
然后我们依然用上述的方法来运行这个文件:
javac HelloP.java
java HelloP
报错了说找不到主类。
此时正确的方式是
javac –d . HelloP.java
-d是带目录编译,将java采用的目录作为命名空间分隔符的目录连同java文件一起编译了。
然后我们运行的时候就是
java com.tuhooo.HelloP
那么怎么作为jar包运行呢?
刚刚我们已经带目录进行编译了,接下来就是打包,打包很简单但是要注意一点。
jar –cvf test.jar com/tuhooo/HelloP.class
这里的意思是将HelloP这个类打包到当前路径的test.jar中,注意如果是带包的话前面的路径名也一定要带着。
不然只有一个裸类是没用的。
[root@hadoop ~]# jar -cvf test.jar com/tuhooo/HelloP.class
added manifest
adding: com/tuhooo/Hello.class(in = 428) (out= 291)(deflated 32%)
[root@hadoop ~]# java -cp test.jar com.tuhooo.HelloP
hello.......
那么我们执行的时候就是通过如下命令来执行的
java中的package如何打包,以及运行其中的main方法?
如何手写MapReduce并在命令行打包运行?