代码在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.mzph.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日志--…