代碼在eclipse下不報錯,在doc命令行下報錯--jar file和runable jar file

今天開發一個小工具,引用了Log4j,來記錄日志,在eclipse下運行,代碼正常,打包成jar放到doc命令行下運行報錯:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
? ? ? ? at miaogen.zeng.util.jdbc.Configuration.<init>(Configuration.java:20)
? ? ? ? at miaogen.zeng.util.jdbc.Configuration.getInstance(Configuration.java:37)
? ? ? ? at miaogen.zeng.service.index.main(index.java:11)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
? ? ? ? at java.net.URLClassLoader.findClass(Unknown Source)
? ? ? ? at java.lang.ClassLoader.loadClass(Unknown Source)
? ? ? ? at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
? ? ? ? at java.lang.ClassLoader.loadClass(Unknown Source)
? ? ? ? ... 3 more


試了百度上各種方法。后來試了下導出 runable jar file試試。運行成功!

jar file和runable jar file 導出后的區別如下圖:

runable jar file:



jar file:



META-INF的文件區別



下文是轉載的解釋

直接運行 .class的方法 ? ? java ?-cp . ?com.network.Chat ?, 不用加.class后綴?

?? ?從eclipse中export 的jar file,僅僅是把.class打包了。所以執行這種jar file需要用 java -cp .;ch04.jar com.thnkjava.ch04, 如果你還應用到另外的lib庫,你必須在cp里說明,也就是 ?java -cp .;ch04.jar;lib01.jar;lib02.jar?com.thnkjava.ch04 來執行。事實上可以發現ch04.jar也在cp里面,說明ch04.jar就是lib庫,最后的參數指明了要被執行的類名。

?? ?如果從eclipse里export出的是 runnable jar file,那么個執行這個jar包的時候是不需要指明哪個類的,直接這樣執行 java -jar ch04.jar。原因就是jar包中的MANIFEST.MF內容不同。 runnable jar包中指明哪個類先執行,所以你可以用 java -jar ch04.jar來執行你想要執行的代碼,而不必指明具體哪個類。這個你可以打開 jar包查看MANIFEST.MF的區別,一目了然。

?? ? 生成runnable jar file時,有兩個選項,Extract required libraries into generated JAR 和 package?equired libraries into generated JAR。 前者是把你用到的.class 文件提取出來,后者則是把你所需要的所有jar包都打進一個包里。兩者的MANIFEST.MF文件內容也有所不同,這應該是eclipse造成的,IDE 做了自己的事情,具體就不研究了。



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539624.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539624.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539624.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

gradle java ide_使用Gradle構建Java項目

使用Gradle構建Java項目這個手冊將通過一個簡單的Java項目向大家介紹如何使用Gradle構建Java項目。我們將要做什么&#xff1f;我們將在這篇文檔航中創建一個簡單的Java項目&#xff0c;然后使用Gradle構建它。需要準備什么&#xff1f;預留15分鐘空閑時間一件稱手的兵器(你最喜…

小馬激活軟件下載,當心偽小馬,有病毒

官方的小馬激活軟件已經停止更新了&#xff0c;下文是官方停更公告。 http://www.pccppc.com/xiaomajihuo-html 所以小馬oem7以后的都不是官方的&#xff0c;包含病毒。重裝系統后&#xff0c;一般是先激活系統&#xff0c;再安裝殺毒軟件&#xff0c;這就給“偽小馬激活工具”…

truncate,delete,drop之間的區別

TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同&#xff1a;二者均刪除表中的全部行。 但 TRUNCATE TABLE 比 DELETE 速度快&#xff0c;且使用的系統和事務日志資源少。 DELETE 語句每次刪除一行&#xff0c;并在事務日志中為所刪除的每行記錄一項。 TRUNCATE…

三張圖搞懂JavaScript的原型對象與原型鏈

對于新人來說&#xff0c;JavaScript的原型是一個很讓人頭疼的事情&#xff0c;一來prototype容易與__proto__混淆&#xff0c;二來它們之間的各種指向實在有些復雜&#xff0c;其實市面上已經有非常多的文章在嘗試說清楚&#xff0c;有一張所謂很經典的圖&#xff0c;上面畫了…

python partial_如何在python多處理模塊中使用partial函數?

下面是我如何解決這個問題的一個簡單例子from functools import partialfrom multiprocessing import Pooldef VariadicLifter(func, args):return func(*args)def func(x,y,z,a):return x2*y3*z4*aif __name__ __main__:func_ partial( func, 500, 1007)lfunc_ partial( Va…

Mybatis中resultMap

MyBatis中在查詢進行select映射的時候&#xff0c;返回類型可以用resultType&#xff0c;也可以用resultMap&#xff0c;resultType是直接 表示返回類型的&#xff0c;而resultMap則是對外部ResultMap的引用&#xff0c;但是resultType跟resultMap不能同時存在。 1.resultType …

超簡單的mysql多實例布置

一、基本概念mysql下載&#xff1a;http://mirrors.sohu.com/mysql/MySQL-5.5/1、MySQL多實例就是在一臺機器上面開啟多個不同的端口&#xff0c;運行多個MySQL服務進程。這些MySQL多實例公用一套安裝程序&#xff0c;使用不同的(也可以是相同的)配置文件&#xff0c;啟動程序&…

java程序設計計算器_Java程序設計計算器(含代碼)

Java程序課程設計任務書實用性計算器的設計與開發1、主要內容&#xff1a;開發一個實用型的計算器程序&#xff0c;實現基本的計算功能同時并進行相應的功能拓展&#xff0c;使其具更加人性化的功能。我們可以用其進行相應的計算功能來方便我們的學習&#xff0c;代替我們進行一…

mybatis配置insert/update/delete同一個模板

insert&#xff0c;update&#xff0c;delete標簽只是一個模板&#xff0c;在操作時是以sql語句為核心的&#xff0c; 即在做增/刪/改時&#xff0c;insert/update/delete便簽可以通用&#xff0c; 但做查詢時只能用 select 標簽 提倡什么操作就用什么標簽 這就是為什么 ex…

Mybatis配置文件resultMap映射啥時候可寫可不寫?

1、student實體類 public class Student {private Integer id;//編號private String name;//姓名private Double sal;//薪水public Student(){}public Student(Integer id, String name, Double sal) {this.id id;this.name name;this.sal sal;}public Integer getId() {ret…

arithmetic java_Java:Arithmetic

好吧&#xff0c;事實上你有方法設置變量叫get - 這顯然不是一個好主意&#xff0c;并且沒有縮進......但它應該有效。但是&#xff0c;你還沒有展示出你是如何使用它的。也許你實際上并沒有被稱為setter方法&#xff1f;以下是相同代碼但具有不同名稱的示例&#xff0c;以及使…

網絡框架 Retrofit(三)

簡單實現Retrofit&#xff08;替代Okhttp&#xff09; 1.定義注解參數 Documented Target(PARAMETER) Retention(RUNTIME) public interface Field {String value(); } 復制代碼Documented Target(METHOD) Retention(RUNTIME) public interface Get {String value() default &q…

Tomcat提示“XDB 的服務器 localhost 要求用戶名和密碼”

在地址欄輸入http://localhost:8080/&#xff08;8080是TOMCAT的端口號)測試&#xff0c;系統提示“XDB 的服務器 localhost 要求用戶名和密碼”&#xff0c;并彈出輸入用戶、密碼的窗口&#xff0c;查看代碼沒問題&#xff0c;不解&#xff0c;上網上查資料&#xff0c;是因為…

java jqgrid json格式_jqGrid 數據之 Json

Json數據需要定義jsonReader來跟服務器端返回的數據做對應&#xff0c;其默認值&#xff1a; jsonReader : { root: "rows", page: "page", total: "total", records: "records", repeatitems: true, c…

django 中靜態文件項目加載問題

問題描述&#xff1a; django項目中創建了多個app后&#xff0c;每個app中都有對應的static靜態文件。整個項目運行時這些靜態文件的加載就是一個問題&#xff0c;因為整個項目我只參與了一部分&#xff0c;項目部署之類的并沒有參與。我寫的部分的js代碼遇到點問題&#xff0c…

Erlang/OTP設計原則(文檔翻譯)

http://erlang.org/doc/design_principles/des_princ.html 圖和代碼皆源自以上鏈接中Erlang官方文檔&#xff0c;翻譯時的版本為20.1。 這個設計原則&#xff0c;其實是說用戶在設計系統的時候應遵循的標準和規范。閱讀前我一直以為寫的是作者在設計 Erlang/OTP 框架時的一些原…

存儲過程的參數可以使用sql的函數

系統已做成存儲過程&#xff0c;調用方法如下&#xff1a; crh_entry(yyyymmdd,起始時間,結束時間); 示例1&#xff1a;進行2016年4月10日10時到12時的測試&#xff0c;應寫為&#xff1a; exec crh_entry(20160410,10,11); 示例2&#xff1a;進行2016年4月8日14時到15時的…

java如何實例化集合_如何在java中實例化一個Queue對象?

Queue是一個接口&#xff0c;這意味著你不能直接構造一個Queue 。最好的select是構造一個已經實現Queue接口的類&#xff0c;如下所示&#xff1a; AbstractQueue &#xff0c; ArrayBlockingQueue &#xff0c; ConcurrentLinkedQueue &#xff0c; DelayQueue &#xff0c; D…

leetcode 121 股票買賣問題系列

描述&#xff1a; 給一些列數字&#xff0c;表示每條股票的價格&#xff0c;如果可以買賣一次&#xff08;不能同一天買和賣&#xff09;&#xff0c;求最大利益&#xff08;即差最大&#xff09;。 其他三道問題是&#xff0c;如果能買賣無限次&#xff0c;買賣兩次&#xff0…

Mybatis-jar-lib

csdn的下載好像和我有仇&#xff0c;上傳資源不斷提示&#xff1a;請您先登錄 下載&#xff1a;http://pan.baidu.com/s/1pL2BAzT asm-3.3.1.jar cglib-2.2.2.jar commons-logging-1.1.1.jar mybatis-3.1.1.jar ----以上mybatis的--- log4j-1.2.16.jar ----以上log4j日志--…