成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

手動編譯并運行Java項目實現過程解析

瀏覽:4日期:2022-08-22 17:52:04

現在Java開發基本上就是IDE調試,如果跨平臺打個jar包過去運行一般就可以了,但是有些情況比如需要引入外部依賴的時候,這個時候是不能直接運行的,還需要引入一些外部的參數,并不是簡單的javac和java的關系了,下面來詳細說一下

一般情況下,在本地都是使用eclipse開發工具進行開發,很多東西基本上就不用我們考慮了,如果我們要將項目放到Linux下運行的話,那么就需要進行轉移的操作,當然有Maven、Ant這樣的自動化部署工具,簡直是太方便了,為了做到更進一步認識的話,我們純手動的去打包一個java的項目

首先,項目名稱為JarTest,在eclipse結構如下圖所示:

手動編譯并運行Java項目實現過程解析

包名和類名都看的非常清楚了,App是主類,包含有main方法;TestBean是一個JavaBean實體;TestService是一個利用TestBean進行簡單計算的類,那么各個類的代碼如下:

App.java

package net.javatest.package1;import java.util.ArrayList;import java.util.List;import net.javatest.package2.TestBean;import net.javatest.package3.TestService;public class App { public static void main(String[] args) { List<TestBean> tb = new ArrayList<TestBean>(); String[] names = {'hacker','nginx','github','hadoop','storm','solr','kafka','spark'}; for(int i = 0;i < names.length;i++) { tb.add(new TestBean(String.valueOf(i),names[i])); } List<String> namelist = TestService.nameList(tb); for(int i = 0;i < namelist.size();i++) { System.out.println(namelist.get(i)); } }}

TestBean.java

package net.javatest.package2;public class TestBean { private String id; private String name; public TestBean() { } public TestBean(String id, String name) { this.id = id; this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}

TestService.java

package net.javatest.package3;import java.util.ArrayList;import java.util.List;import net.javatest.package2.TestBean;public class TestService { public static List<String> nameList(List<TestBean> tbs) { List<String> names = new ArrayList<String>(); for(TestBean tb : tbs) { names.add(tb.getName()); } return names; }}

文件就是這樣,源程序都不依賴于外部包,其實在eclipse中自動已經進行編譯成class了,我們可以直接使用class文件,在這里我們直接使用源文件進行編譯,首先打包上傳項目,壓縮成JarTest.zip上傳到服務器,

手動編譯并運行Java項目實現過程解析

接下來解壓釋放目錄:

unzip JarTest.zipcd JarTest/src

因為我們打包項目的時候打包的項目外層目錄,所以解壓出來需要進入JarTest這個目錄,我們的源代碼文件在src中,現在開始編譯:

javac net/javatest/package1/App.java net/javatest/package2/TestBean.java net/javatest/package3/TestService.java

這樣回車之后,沒任何提示就編譯好了,現在每個包下都有一個和源文件對應的class文件,如果感覺上面太長太麻煩,可以使用通配符全部搞定編譯:

javac net/javatest/package*/*.java

這樣就全部編譯完了,現在我們可以執行一下看一下運行結果,

java net.javatest.package1.App

這樣就可以直接App的main方法了,接下來可以進行打包,打成一個jar包,用起來更方便,我們可以用eclipse打成jar包看一下目錄結構,我們會發現jar包如果解壓出來之后,會看到META-INF的一個目錄,這個目錄中有一個MANIFEST.MF文件,這個文件就是定義如何導入外部jar包以及主類的存在位置,接下來我們自己編寫MANIFEST.MF這個文件,我們使用命令:vim MANIFEST.MF創建一個文件,直接在當前也就是src目錄下創建即可,然后我們編輯以下內容:

Manifest-Version: 1.0Main-Class: net.javatest.package1.App

第一行是固定格式,定義版本號,第二行就是指明主類的位置可以用空格分開多個聲明,注意冒號之后要有一個空格;然后注意的就是后面需要空出2行,輸入兩次換號即可,然后我們保存退出,執行下面命令打包:

jar -cvfm jartest.jar MANIFEST.MF net/

其中jartest.jar就是要打的包,net就是我們的包目錄,現在我們就可以看到一個jartest.jar這樣一個文件,

手動編譯并運行Java項目實現過程解析

然后我們執行下面命令就可以運行該jar文件了

java -jar jartest.jar

如果jar包中具有多個包含main方法的類時,需要指定Main-Class定義的其中之一,命令如下:

java -jar jartest.jar net.javatest.package1.App

以上是沒有任何外部依賴的Java項目的運行,如果有其他依賴的話,具體運行情況如下,我們將剛才打好的jar包下載,然后新建另外一個項目去調用jar包里面類中的方法,項目如下:

手動編譯并運行Java項目實現過程解析

只有一個主類,代碼很簡單,就是調用了jartest.jar的方法,JarTest2.java代碼如下:

package net.javatest;import java.util.ArrayList;import java.util.List;import net.javatest.package2.TestBean;import net.javatest.package3.TestService;public class JarTest2 { public static void main(String[] args) { List<TestBean> tb = new ArrayList<TestBean>(); String[] names = {'test2','nginx','hbase','hadoop','storm','solr','kafka','spark'}; for(int i = 0;i < names.length;i++) { tb.add(new TestBean(String.valueOf(i),names[i])); } List<String> namelist = TestService.nameList(tb); for(int i = 0;i < namelist.size();i++) { System.out.println(namelist.get(i)); } }}

這時候將jartest.jar導入項目的path里面,編譯的時候就不會出錯了,我們繼續上傳該項目,進行編譯,編譯命令如下:

javac -classpath ../lib/jartest.jar: net/javatest/JarTest2.java

導入多個外部jar包時需要用:分割,并且最后一個后面必須有冒號,-classpath參數用于指定外部jar包和類文件都可以,運行的時候也需要進行包含,運行命令如下:

java -classpath ../lib/jartest.jar: net.javatest.JarTest2

接下來將項目打包,打包之前同樣執行vim MANIFEST.MF編輯文件如下:

Manifest-Version: 1.0Main-Class: net.javatest.JarTest2Class-Path: lib/jartest.jar

這里第三行導入外部jar包文件,多個文件依賴用空格分隔,目錄無所謂這里是相對于打包后jar文件的目錄,就是說lib目錄和打包后的jar文件在一個目錄即可正常運行,接下來打包:

jar -cvfm jartest2.jar MANIFEST.MF net/

打包后直接使用java -jar jattest.jar是不能執行的,需要將剛才的lib復制過來才可以,執行下面命令:

cd ..cp -r lib/ src/

復制剛才的lib目錄過來即可,現在執行java -jar jartest2.jar即可正常運行了

綜合來說,對于一個復雜的項目,編譯以及運行時除了系統類庫的支持,還需要引入外部jar包或者類文件才能保證整個項目的正常運行,具體的執行流程需要不斷地去熟悉

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
99久久99久久久精品齐齐| 国产欧美一区二区三区另类精品 | 色综合久久天天| 亚洲精品视频观看| 欧美大片专区| 久久久久成人黄色影片| 高清久久久久久| 在线电影院国产精品| 日韩av成人高清| 久久xxxx精品视频| 亚洲黄色小说网站| 一本色道精品久久一区二区三区| 国产精品看片你懂得| 欧美高清一区| 国产精品素人一区二区| 午夜日韩电影| 国产欧美一区二区精品性色超碰| 97久久精品人人做人人爽| 日韩精品一区二区在线| 国产精品一区二区不卡| 欧美高清dvd| 国产乱码精品一区二区三区av| 欧美欧美午夜aⅴ在线观看| 极品少妇一区二区三区精品视频 | 另类小说欧美激情| 欧美一a一片一级一片| 久久国产精品72免费观看| 欧美日韩三级视频| 狠狠网亚洲精品| 91精品欧美综合在线观看最新 | 国产日韩一区二区三区在线播放| 亚洲综合成人网| 欧美主播一区二区三区美女 久久精品人| 亚洲一区在线观看视频| 亚洲欧美春色| 石原莉奈一区二区三区在线观看| 色综合久久天天综合网| 另类的小说在线视频另类成人小视频在线| 欧美私人免费视频| 国产精品一二三四| 欧美精品一区二区三区在线播放| 欧美韩日精品| 亚洲美女少妇撒尿| 免费日韩av| 麻豆免费看一区二区三区| 欧美精品视频www在线观看 | www.亚洲色图.com| 日本一区二区三区视频视频| 禁久久精品乱码| 一区二区三区中文在线| 色哟哟欧美精品| 狠狠色狠狠色综合日日91app| 日韩三级免费观看| 欧美99在线视频观看| 亚洲人成影院在线观看| 老司机午夜精品视频| 国产激情一区二区三区| 中文在线一区二区| 亚洲尤物在线| 精品一二三四在线| 日韩免费一区二区三区在线播放| 91美女精品福利| 一区二区三区在线免费视频| 色综合久久88色综合天天免费| 久草热8精品视频在线观看| 日韩午夜三级在线| 你懂的亚洲视频| 曰韩精品一区二区| 欧洲国内综合视频| bt欧美亚洲午夜电影天堂| 亚洲婷婷在线视频| 91久久精品一区二区二区| 国产乱子伦一区二区三区国色天香| 精品久久人人做人人爱| 亚洲图片欧洲图片日韩av| 五月天精品一区二区三区| 欧美一区二区三区免费观看视频 | 日本免费在线视频不卡一不卡二| 91精品国产入口| 亚洲香蕉网站| 看片的网站亚洲| 国产欧美一区二区精品久导航 | 欧美一区二区视频在线观看2022| 国产精品va| 全部av―极品视觉盛宴亚洲| 亚洲精品在线一区二区| 欧美亚洲一区二区三区| 成人性视频免费网站| 亚洲人成在线播放网站岛国| 欧美理论片在线| 亚洲精品极品| 国产麻豆精品久久一二三| 自拍视频在线观看一区二区| 欧美日韩精品综合在线| 91亚洲精品一区二区乱码| 日日夜夜免费精品| 久久久不卡影院| 色欧美日韩亚洲| 欧美日本二区| 韩国三级中文字幕hd久久精品| 亚洲欧美在线视频观看| 3751色影院一区二区三区| 国产主播一区| 裸体健美xxxx欧美裸体表演| 中日韩av电影| 欧美一区二区三区四区在线观看 | 精品国产91乱码一区二区三区| 久久精品天堂| 91捆绑美女网站| 秋霞电影一区二区| 国产精品青草综合久久久久99| 欧美丰满高潮xxxx喷水动漫| 亚洲电影自拍| 国产曰批免费观看久久久| 亚洲欧美日韩成人高清在线一区| 日韩欧美国产一区二区三区| 免费在线国产精品| 欧美在线3区| 国产精品综合在线视频| 亚洲综合一区二区精品导航| 亚洲精品在线电影| 色av综合在线| 在线欧美视频| 99亚偷拍自图区亚洲| 日本午夜一区二区| 亚洲男同1069视频| 欧美va亚洲va在线观看蝴蝶网| 麻豆成人精品| 欧美日韩岛国| 国产xxx精品视频大全| 视频在线观看国产精品| 亚洲国产精品黑人久久久| 日韩一区二区免费视频| 色菇凉天天综合网| 国产一区二区你懂的| 91理论电影在线观看| 国产高清精品网站| 青青草91视频| 亚洲一区二区三区视频在线| 国产婷婷色一区二区三区在线| 欧美一区二区三区免费在线看 | 欧美日韩岛国| 成人动漫精品一区二区| 理论电影国产精品| 五月综合激情网| 亚洲精选视频免费看| 国产日韩欧美一区二区三区综合| 日韩亚洲欧美中文三级| 欧美日韩高清不卡| 色8久久精品久久久久久蜜| 国产欧美日韩一区二区三区在线| 欧美三区美女| 色综合天天狠狠| 成人av在线资源网站| 国产精品资源在线| 久久av资源网| 日本美女一区二区三区视频| 一区二区三区电影在线播| 国产精品久久毛片| 欧美精品一区二区久久久| 欧美一区二区三区免费| 欧美精品在线一区二区三区| 欧美性xxxxxxxx| 色乱码一区二区三区88| 久久精品系列| 久久久久网站| 欧美中日韩免费视频| 美女精品一区| 久久综合影视| 欧美艳星brazzers| 欧美日韩精品一区二区在线播放| 91极品视觉盛宴| 久久久蜜桃一区二区人| 久久福利一区| 日本久久一区二区| 欧美中文字幕一区| 欧美日韩精品一区二区三区四区 | 五月激情综合婷婷| 亚洲成av人片在线| 五月天精品一区二区三区| 日韩精品色哟哟| 麻豆国产精品官网| 精品一区二区久久| 国产美女娇喘av呻吟久久| 一区二区激情小说| 亚洲va中文字幕| 美女视频黄频大全不卡视频在线播放| 蜜桃在线一区二区三区| 久久er精品视频| 高清不卡一区二区在线| 成人免费三级在线| 欧美成人日韩| 欧美色图首页| 黄色亚洲免费| 国产欧美日韩亚洲| 在线观看日韩电影| 欧美一级久久久| 久久精品视频一区| 国产精品第13页| 亚洲一区二区不卡免费|