linux 下如何把源码打包成hadoop-core-1.1.2.jar

linux 下如何把源码打包成hadoop-core-1.1.2.jar,第1张

1.首先确认,你的linux上有没有安装ant

2.确认你的 各种环境是否配置正确(不会的话去看hadoop开发指南)

我把我的build.xml发给你

<?xml version="1.0"?>

<!--build.xml - a simple Ant buildfile -->

<project name="Simple Buildfile" default="compile" basedir=".">

<!--Set up the env prefix for environment variable -->

<property environment="env"/>

<!-- The directory cotaining source code -->

<property name="src.dir" value="src" />

<!-- Temporary build directories -->

<property name="build.dir" value="build"/>

<property name="build.classes" value="${build.dir}/classes"/>

<property name="build.lib" value="${build.dir}/lib"/>

<property name="jar.name" value="howtouse.jar"/>

<!-- Hadoop path -->

<property name="hadoop.path" value="${env.HADOOP_HOME}"/>

<!-- Target to create the build directories prior to the -->

<!-- compile target -->

<target name="prepare">

<mkdir dir="${build.dir}"/>

<mkdir dir="${build.classes}"/>

<mkdir dir="${build.lib}"/>

</target>

<target name="clean" description="Removes all generated files.">

<delete dir="${build.dir}"/>

</target>

<target name="compile" depends="prepare" description="Compiles all source code.">

<javac srcdir="${src.dir}" destdir="${build.classes}" includeantruntime="false"

deprecation="false">

<classpath>

<pathelement location="${hadoop.path}/hadoop-core-0.20.203.0.jar"/>

<pathelement location="${hadoop.path}/hadoop-tools-0.20.203.0.jar"/>

<pathelement location="${hadoop.path}/hadoop-examples-0.20.203.0.jar"/>

<pathelement location="${hadoop.path}/lib/mockito-all-1.8.5.jar"/>

<pathelement location="${hadoop.path}/lib/junit-4.5.jar"/>

<pathelement location="${hadoop.path}/lib/commons-math-2.1.jar"/>

<pathelement location="${hadoop.path}/lib/commons-cli-1.2.jar"/>

<pathelement location="${hadoop.path}/contrib/datajoin/hadoop-datajoin-0.20.203.0.jar"/>

</classpath>

</javac>

</target>

<target name="jar" depends="compile" description="Generates jar in the dist directory.">

<!-- Exclude unit tests from the final Jar file -->

<jar jarfile="${jar.name}" basedir="${build.classes}" excludes="**/*Test.class"/>

</target>

<target name="all" depends="clean,jar" description="Cleans,compiles,then builds the Jar file."/>

</project>

确保以上条件后

1.将自己写的java文件放到 /home/hadoop/ant/build/src 使用XFTP

2.在HDFS中新建一个文件目录专门用来装资源文件 hadoop fs -mkdir /user/src

3.将simple.txt测试文件放到HDFS中 hadoop fs -put/user/src

4.将/home/hadoop/ant/build/src下的java文件编译打包成play.jar(名字由build.xml决定)

方法:编译之前必须保证与build.xml同级目录下 ant jar

5.hadoop单机模式运行的时候必须保证在lib目录下

hadoop jar play.jar hadoop/MaxTemperature /user/src/simple.txt output

当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行。首先想到的可能就是通过 java -jar xxx.jar 的方式来运行我们的jar包,程序运行正常,但是窗口被锁定,当我们关闭窗口或Ctrl + C打断程序运行时,程序就会退出,这肯定不是我们想要的,下面我介绍几种Linux下后台启动jar包的方法

优化方法一:

&表示后台运行,ssh窗口不被锁定,但是关闭窗口时,程序还是会退出

优化方法二:

nohup 表示不挂断运行命令行,当账号退出或关闭终端时,程序仍然运行

当用 nohup 命令执行作业时,该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

优化方法三:

 >/usr/local/temp.txt 表示将所有启动的日志信息记录到temp.txt文件中

用Java写了一个小工具,使用maven java 工程。写完后,想打包成一个可执行的jar包。

使用maven的插件maven-assembly-plugin

pom.xml里添加

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-assembly-plugin</artifactId>

<version>3.0.0</version>

<configuration>

<archive>

<manifest>

<mainClass>com.geostack.JsoupTest</mainClass>

</manifest>

</archive>

<descriptorRefs>

<descriptorRef>jar-with-dependencies</descriptorRef>

</descriptorRefs>

</configuration>

</plugin>

</plugins>

</build>

在工程根目录执行 mvn clean compile assembly:single

在target文件夹里生成 jsoup-jar-with-dependencies.jar

这个jar包便是可执行的jar了,用命令java -jar path\jarfile便可以执行。

注意:compile必须再assembly:single之前,要不然你工程的代码(class文件)就不会被打包进去


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7573442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存