专栏首页后台及大数据开发Linux巩固记录(2) java项目的编译和执行

Linux巩固记录(2) java项目的编译和执行

由于要近期使用hadoop等进行相关任务执行,操作linux时候就多了

以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上去

看下进程,复制粘贴删除等基本操作,很多东西久了不用就忘了,所有写个demo巩固下曾经的linux知识

后续会有hadoop等主流的大数据相关环境的搭建及使用

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

这次讲最基本的java 编译  

1.单个java文件的编译和运行

a 首先通过tree命令查看下目录结构(可通过 yum -y install tree 在线安装)

[root@master javaFile]# tree
.
├── lib
│   ├── commons-io-2.5.jar
│   └── spring-core-4.3.9.RELEASE-sources.jar
└── src
    └── test
        └── IOTest.java

3 directories, 3 files
[root@master javaFile]# 

单个文件 如果有package 需要跟上-d 编译后存放路径

如果引用了其他jar包,这要用-classpath指出 多个jar包用冒号隔开

比如我的测试中需要引用两个jar包,并且是在test package下的

package test;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.springframework.util.StringUtils;

public class IOTest {

    public static void main(String[] args) throws IOException {
        File f = new File("/input.txt");
        System.out.println(f.getAbsolutePath());
        String result = FileUtils.readFileToString(f);
        System.out.println(result);
        
        if(StringUtils.isEmpty(result)){
            System.out.println("空文件");
        } else {
            System.out.println("非空文件");
        }
    }
}

那么编译命令就应该如下

[root@master javaFile]# javac -classpath .:/home/javaFile/lib/* -d /home/classes/ /home/javaFile/src/test/IOTest.java 
Note: /home/javaFile/src/test/IOTest.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
[root@master javaFile]# tree /home/classes/
/home/classes/
├── org
│   └── springframework
│       └── util
│           ├── Assert.class
│           ├── CollectionUtils.class
│           ├── CollectionUtils$EnumerationIterator.class
│           ├── CollectionUtils$MultiValueMapAdapter.class
│           ├── MultiValueMap.class
│           ├── ObjectUtils.class
│           └── StringUtils.class
└── test
    └── IOTest.class

4 directories, 8 files
[root@master javaFile]# 

编译完成后应该按照如下命令执行

[root@master javaFile]# java -classpath /home/classes/:/home/javaFile/lib/* test.IOTest
/input.txt
test haha 
非空文件
[root@master javaFile]# 

2.编译多个java文件或者java项目

接1中代码,进行了简单修改,IOTest中需要调用TestUtil中代码

package test;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.springframework.util.StringUtils;

import xiao.util.TestUtil;

public class IOTest {

    public static void main(String[] args) throws IOException {
        File f = new File("/input.txt");
        System.out.println(f.getAbsolutePath());
        String result = FileUtils.readFileToString(f);
        System.out.println(result);

        if (StringUtils.isEmpty(result)) {
            System.out.println("空文件");
        } else {
            System.out.println("非空文件");
        }

        TestUtil.test("main msg");
    }
}
package xiao.util;

public class TestUtil {

    public static void test(String s) {
        System.out.println("util :" + s);
    }

    public static void main(String[] args) {
        test("test utils msg");
    }
}

a 首先通过tree命令查看下目录结构(可通过 yum -y install tree 在线安装)

[root@master javaFile]# tree
.
├── lib
│   ├── commons-io-2.5.jar
│   └── spring-core-4.3.9.RELEASE-sources.jar
└── src
    ├── test
    │   └── IOTest.java
    └── xiao
        └── util
            └── TestUtil.java

5 directories, 4 files
[root@master javaFile]# 

b.生成需要编译的文件列表

[root@master javaFile]# find src -name \*.java > needCompileJavaFiles.txt
[root@master javaFile]# cat needCompileJavaFiles.txt 
src/test/IOTest.java
src/xiao/util/TestUtil.java
[root@master javaFile]# 

c. 开始编译

[root@master javaFile]# javac -classpath .:/home/javaFile/lib/* -d /home/classes/ @/home/javaFile/needCompileJavaFiles.txt 
Note: src/test/IOTest.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
[root@master javaFile]# tree /home/classes/
/home/classes/
├── org
│   └── springframework
│       └── util
│           ├── Assert.class
│           ├── CollectionUtils.class
│           ├── CollectionUtils$EnumerationIterator.class
│           ├── CollectionUtils$MultiValueMapAdapter.class
│           ├── MultiValueMap.class
│           ├── ObjectUtils.class
│           └── StringUtils.class
├── test
│   └── IOTest.class
└── xiao
    └── util
        └── TestUtil.class

6 directories, 9 files
[root@master javaFile]# 

d运行代码

[root@master javaFile]# java -classpath /home/classes/:/home/javaFile/lib/* test.IOTest
/input.txt
test haha 
非空文件
util :main msg
[root@master javaFile]# 

结果符合预期 

ps web项目就不要在linux下自己编译了,拷贝的东西太多了,

通过其它工具如jenkins或者maven编译好了直接拷贝过来就好了  

因为java跨平台嘛  O(∩_∩)O哈哈~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux——搭建嵌入式Linux开发环境步骤总结(虚拟机、Ubuntu、JDK、库文件、GCC)

    回顾一直以来做的嵌入式项目方向,从如ST的单片机裸机开发,SOC开发,到STM32裸机开发,基于uCOSII的开发,基于freeRTOS的开发等,在实时操作系统...

    Winter_world
  • 学习C语言编程,推荐你看这6本书

    这本书总共包含21章也适合入门,是一本不可多得的编程必备书籍。知识点更详细,但内容上对初学者来说没上一本通俗易懂(个人觉得)

    C语言中文社区
  • Linux巩固记录(1) J2EE开发环境搭建及网络配置

    以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上去

    肖哥哥
  • 人类高质量 Java 学习路线【一条龙版】

    大家好,我是鱼皮。现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了。大部分的博主推荐资源,也就是把播放量高的视频说一遍,水...

    程序员鱼皮
  • 初学者学Java常遇到的问题,我都给你回答了!

    看到了这个问题,就想起了我在大学自学的时候有同样的问题,现在工作了,来写写自己的看法,希望对广大的初学者有所帮助。

    Java3y
  • [Sublime-Text] Linux下用Sublime-Text3编译输出Java文件

    因为现在在借着经典的书籍巩固一些基础知识,所以会经常跑一些简单的程序,可又不想开庞大的IDE。所以就想试着用Sublime-Text来编译程序,哦,当然如果习惯...

    wOw
  • 在腾讯实习的那段日子:不要在难受的时候选择 '逃避/离开'

    时间过得很快,从2014.6.5入职实习到2015.1.5已经是7个月的时间了,在这边还是学到了很多东西,遇到的人大多数比较nice。中间拿到了留任offer,...

    s1mba
  • Java代码自动部署

    代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节。对于Java开发者来说,Java代码的发布部署也是经常需要做的一件事,特...

    java架构师
  • 大数据基础学习四:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及需要注意的问题

    大数据基础学习四:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤、易错点分析及需要注意的问题(以 ubuntu-18.04.3、hadoop-3...

    白鹿第一帅
  • Linux巩固记录(3) hadoop 2.7.4 环境搭建

    以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上去

    肖哥哥
  • (概念总结)快速了解JVM结构和工作原理

    Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程,相当于一个普通应用程序。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 java...

    星尘的一个朋友
  • 第一次Java串讲

    Java基础的知识点结构 “目无全牛 游刃有余” ? 2阶段复习巩固 老九学堂学Java微视频到此已经录制三讲了,我们计划是每二周做一次知识点的串讲,目的是帮...

    老九君
  • 我的 Java 转 Go 之路

    从毕业到现在已经接近两年了,在这段时间里,我日常开发都是使用的 Java,因为大学那时候自学的是 Java,然后毕业找到的工作也是做 Java 开发的。

    roseduan
  • 为机器赋予记忆:DeepMind重磅研究提出弹性权重巩固算法

    选自DeepMind 机器之心编译 作者:微胖、吴攀 作为世界上最受瞩目的人工智能技术研究机构之一,Google DeepMind 总是在不断带来我们惊喜。在去...

    机器之心
  • 力扣 (LeetCode)-28. 实现 strStr()|刷题打卡

    Github来源:力扣 (LeetCode)|刷题打卡 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者

    达达前端
  • 2 天入门 Java-Day 1

    图片来自 新生大学 公众号 今天一口气敲完了慕课网上的 《Java入门第一季》,这个课的老师讲的挺好的,视频资料做的挺用心。 课程操作界面很像 codecade...

    杨熹
  • 给程序员们的小秘籍

    ● 前言 ● 编者是一个工作多年的程序员,也有做过一些大中型项目的经验。尝过成功的滋味,也体验过失败的痛苦。虽然觉得自己离真正的高手还有距离,但也希望能分享出自...

    老九君
  • Java 消亡了?不!原因在这…

    年复一年,关于”Java消亡了?”的疑问频繁涌现,然而,通过所有外部表现来看,Java仍活着,并且在发展。尽管许多新语言各领风骚,开发语言排行榜(TIOBE)上...

    哲洛不闹
  • java 学习路线

    注:这里的 java 基础只是一些简单的语法和 Java 特性,对于线程这些高级的内容可以在写过一些项目后回头来巩固一下

    帅飞

扫码关注云+社区

领取腾讯云代金券