由于要近期使用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. 协程的NullReferenceException 错误

    public void loadPic(string url) { WWW www = new WWW(url); StartCoroutine(WaitForRequest(www)); } IEn ...

  2. 01.Java 开发简单的计算器

    难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习一. 实验介绍1.1 实验内容本次实验利用Java开发一个可以进行简单的四则运算的图形化计算器,会使用到 Java Swing ...

  3. vue 开发系列(一) vue 开发环境搭建

    概要 目前前端开发技术越来越像后台开发了,有一站式的解决方案. 1.JS包的依赖管理像MAVEN. 2.JS代码编译打包. 3.组件式的开发. vue 是一个前端的一站式的前端解决方案,从项目的初始化 ...

  4. c# 二维list排序和计时

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  5. Iframe跨域JavaScript自动适应高度

    重点分析: 主域名页面:页面A,页面C 其它域名页面:页面B 步骤: 1.页面A(主域名)通过Iframe(id="iframeB")嵌套页面B(其它域名) 2.页面B(其它域名) ...

  6. leetcode - [7]Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. For example:Given binary tr ...

  7. (转)自己来控制EntityFramework4.1 Code-First,逐步消除EF之怪异现象

    转自:http://www.cnblogs.com/richwong/archive/2011/07/06/2098759.html 最近的项目开始使用EF4.1,拜读各路大侠文章数遍,满以为可以轻车 ...

  8. Java 判断字符串能否转化为数字的三种方法

    用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ if (! ...

  9. 修改linux swap空间的swappiness,降低对硬盘的缓存

    linux 会使用硬盘的一部分做为SWAP分区,用来进行进程调度--进程是正在运行的程序--把当前不用的进程调成‘等待(standby)‘,甚至‘睡眠(sleep)’,一旦要用,再调成‘活动(acti ...

  10. C++ 中的异常机制分析

    C++异常机制概述 异常处理是C++的一项语言机制,用于在程序中处理异常事件.异常事件在C++中表示为异常对象.异常事件发生时,程序使用throw关键字抛出异常表达式,抛出点称为异常出现点,由操作系统 ...