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