前言

想要在Linux上运行java程序,可以将java程序编译成功后导出成jar包,然后在Linux上用命令执行jar文件


一、Java环境安装


1.下载压缩包

首先把JDK8的压缩格式的文件jdk-8u162-linux-x64.tar.gz安装到本地电脑,假设保存在“/root/download/”目录下。 在Linux命令行界面中,执行如下Shell命令(注意:当前登录用户名是root):
cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd download #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u162-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #把JDK文件解压到/usr/lib/jvm目录下
解压成功后配置环境变量
cd ~
vim ~/.bashrc
打开了root用户的环境变量配置文件,请在这个文件的开头位置,添加如下内容
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存.bashrc文件后,继续执行如下命令让.bashrc文件的配置立即生效:
source ~/.bashrc
这时,可以使用如下命令查看是否安装成功:
java -version
如果能够在屏幕上返回如下信息,则说明安装成功:
root@huangkiayu:~$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

二、Eclipse编译java程序并导出jar包


这里的Eclipse是windows上的IDE,Linux上安装了JAVA就行
这里以HDFS的操作为例,实现按行读取HDFS中指定文件的方法“readLine()”。 如果读到文件末尾,则返回空,否则返回文件一行的文本。

1、创建项目时导入需要的jar包

  • 首先创建java项目
    请添加图片描述
  • 点击next后添加所需的jar包
    请添加图片描述

    -所需要的jar包在下载hadoop的压缩包里,路径是

    hadoop-3.2.2.tar\hadoop-3.2.2\share\hadoop\common
    请添加图片描述
    请添加图片描述
  • 导入后点击finish,准备工作就完事了

2、编译java程序导出Jar包

  • 编译所要运行代码,功能为输出hdfs中的指定文件内容
package hadoop1;

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.fs.Path;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.*;

public class ShowTheContent extends FSDataInputStream {
  public ShowTheContent(InputStream in) {
    super(in);
  }

  
  public static String readline(BufferedReader br) throws IOException {

    char[] data = new char[1024];
    int read = -1;
    int off = 0;
   
    while ((read = br.read(data, off, 1)) != -1) {
      if (String.valueOf(data[off]).equals("\n")) {
        off += 1;
        break;
      }
      off += 1;
    }
    if (off > 0) {
      return String.valueOf(data);
    } else {
      return null;
    }
  }

  public static void cat(Configuration conf, String remoteFilePath) throws IOException {
    FileSystem fs = FileSystem.get(conf);
    Path remotePath = new Path(remoteFilePath);
    FSDataInputStream in = fs.open(remotePath);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String line = null;
    while ((line = ShowTheContent.readline(br)) != null) {
      System.out.println(line);
    }
    br.close();
    in.close();
    fs.close();
  }


  public static void main(String[] args) {
    Configuration conf = new Configuration();
    conf.set("fs.default.name", "hdfs://47.113.222.36:9000");
    String remoteFilePath = "/user/root/test/file1.txt"; // HDFS 路径

    try {
    	ShowTheContent.cat(conf, remoteFilePath);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

请添加图片描述

  • 发生异常不需要理会,因为我们是要在已经安装过hadoop和jdk1.8的linux环境上运行,在windows系统运行肯定会报错
    请添加图片描述

  • 右键java文件,选择Export
    请添加图片描述

  • 直接next请添加图片描述

  • 选择java程序和导出的路径与自定义名称
    请添加图片描述

  • 点击finish,导出过程中弹出的warning直接ok或者关掉就行

请添加图片描述

  • 完成后指定路径成功生成jar包
    请添加图片描述

三、Linux环境上运行jar包

  • 在/usr/local/hadoop路径下创建文件夹myapp请添加图片描述
  • 将刚刚生成的jar包传入myapp文件夹中请添加图片描述
  • shell命令运行jar包
hadoop jar ./myapp/hadoop2.jar
  • 编译成功输出文本中内容this is file2.txt

请添加图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐