前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux巩固记录(2) java项目的编译和执行

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

作者头像
肖哥哥
发布2019-02-22 11:05:07
1K0
发布2019-02-22 11:05:07
举报

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

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

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

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

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

这次讲最基本的java 编译  

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

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

代码语言:javascript
复制
[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下的

代码语言:javascript
复制
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("非空文件");
        }
    }
}

那么编译命令就应该如下

代码语言:javascript
复制
[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]# 

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

代码语言:javascript
复制
[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中代码

代码语言:javascript
复制
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");
    }
}
代码语言:javascript
复制
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 在线安装)

代码语言:javascript
复制
[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.生成需要编译的文件列表

代码语言:javascript
复制
[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. 开始编译

代码语言:javascript
复制
[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运行代码

代码语言:javascript
复制
[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哈哈~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档