由于要近期使用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哈哈~

Linux巩固记录(2) java项目的编译和执行的更多相关文章

  1. Java 命令行 编译、执行、打包

    Java 命令行 编译.执行.打包 一般来说 IDE 能够很方便的编译打包. 我写这篇文章是遇到了不能使用 IDE 的情况,简单记录一下,不做深入探讨. 环境 linux jdk 1.8 简单的编译执 ...

  2. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 pack ...

  3. 在windows下使用cmd命令行对java文件进行编译和执行

    windows下利用cmd命令行可以调用jdk里的javac.exe和java.exe对java文件进行编译和执行,前提是jdk已成功安装并正确配置相关环境变量 相关配置链接:java基础学习总结—— ...

  4. Linux上Makefile管理java项目

    前面文章讲到了Linux上通过.spec文件与rpmbuild命令将java程序打包为RPM安装包, 现阶段遇到新的需求: 使用Makefile来操纵java的编译.打包 该需求以前面的内容为基础 可 ...

  5. Jenkins与Git持续集成&&Linux上远程部署Java项目

    一.环境搭建 1.安装所需软件 Jdk Maven Jenkins Tomcat Xshell git 以上软件去官网下载,比较简单,不一一描述了 2.安装所需的jenkins插件 Git plugi ...

  6. 在终端上创建Java项目及编译和运行

    一:实践一次这样的操作有助于理解Tomcat/Eclipse的启动原理,包括classpath的设置,option的配置等等: 二:通过Bash终端创建一个简单的Java项目(单项目单Module,如 ...

  7. java代码的编译、执行过程

    Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码 ...

  8. Java代码的编译和执行

    Java代码编译和执行的整个过程包含了以下三个重要的机制: (1)Java源码编译机制 (2)类加载机制 (3)类执行机制 1.Java代码编译是由Java源码编译器来完成,流程图: Java 源码编 ...

  9. (转载)Eclipse将引用了第三方jar包的Java项目打包成可执行jar的两种方法

    转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 "MA ...

随机推荐

  1. Mysql #1406 Data too long 错误

    Mysql #1406 Data too long 错误 http://blog.sina.com.cn/s/blog_68004f680100kgfh.html B. Mysql配置文件:   “在 ...

  2. log4j介绍和使用

    1.apache推出的开源免费日志处理的类库 2.为什么需要日志?? 2.1 在项目中编写system.out.println();输出到控制台,当项目发布到tomcat后,没有控制台(在命令界面能看 ...

  3. 【转】Centos yum 换源

    [1] 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Cent ...

  4. Linux关机操作

    正确的关机流程为:sync > shutdown > reboot > halt 关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档. 例如你可以运行如 ...

  5. poj--2299(树状数组+离散化)

    一.离散化: https://www.cnblogs.com/2018zxy/p/10104393.html 二.逆序数 AC代码: #include<iostream> #include ...

  6. related work

    Traditional approaches, e.g., genetic algorithm (GA) [2] and ant colony optimization (ACO) [3], can ...

  7. openstack查看命令的restful调用形式

    [root@cc10 fast-pulsar2]# [root@cc10 fast-pulsar2]# cinder --debug type-create hzb DEBUG:keystonecli ...

  8. 第29章:MongoDB-索引--全文索引

    ①全文索引 全文索引是用于对长文本检索来使用的,是用正则表达式只能对字符串类型的值进行检索.注意:创建索引是一件比较耗时耗费资源的事情,而全文索引更是耗时更厉害,如果对索引键的内容比较长,需要对内容进 ...

  9. 第03章:MongoDB启动参数说明

    ①基本配置 --quiet # 安静输出 --port arg # 指定服务端口号,默认端口27017 --bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默 ...

  10. Kotlin零碎总结

    1.对于Kotlin的包方法其实对应Java而言是静态方法,如Entrance.kt文件的外部有fun main(...方法,那么编译成字节码后就是Java的Entrance类里有public sta ...