zoukankan      html  css  js  c++  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哈哈~

  • 相关阅读:
    一个500强公司的数据化运营管理实践
    一个500强公司的数据化运营管理实践
    自动化生成 Openstack 新项目开发框架
    kibana 版本kibana-4.3.1 修改地图
    安装GeoIP数据库
    PLM系统与选择
    爬上喜马拉雅的喜悦——北漂18年(番外篇二)
    获取nginx ip地理信息
    数据接口示例
    elasticsearch 搜索不支持单词的部分进行匹配
  • 原文地址:https://www.cnblogs.com/xiaochangwei/p/7466334.html
Copyright © 2011-2022 走看看