由于项目要求,需要对eclipse中的项目进行打包,使其可以在客户机上不装eclipse的情况下正常运行。

一.环境说明:

eclipse---3.5

jdk-------1.6.0.22

os--------xp,win7

二.解决方案详情:

1.项目不引用外部jar包,仅仅依赖于jdk相关jar包,则有两种解决方案

方案一、通过eclipse/myeclipse-->export-->java-->runnable

JAR File,按照提示选择Main方法,再下一步,最终生成jar文件;在cmd命令行下执行:java -jar

XXX.jar即可。

方案二、还是通过eclipse/myeclipse工具导出,但是不是导出jar文件,而是导出包结构及class文件:export-->File

System-->在这一步选择要导出的类以及项目的配置文件还有lib目录(也就是项目需要的jar包)(这是关键的一步,导出类时因为eclipse/myeclipse默认编译后的class文件在bin/包路径/class文件,这里导出时不需要bin这个文件夹,把包路径和包下的class文件一起导出。最后还应注意,比如我们的项目包都是在com.project.xx包下,而程序入口的main文件在com.project.main包下,则cmd中执行java命令时应该进入到com包所在的目录下,比如在classes目录下则cd

classes,执行命令如下:java com.project.main.Main

2.项目引用第三方jar包,并且需要在启动时读取配置文件

还是通过eclipse/myeclipse工具导出,但是不是导出jar文件,而是导出包结构及class文件:export-->File

System-->在这一步选择要导出的类以及项目的配置文件还有lib目录(也就是项目需要的jar包)(这是关键的一

步,导出类时因为eclipse/myeclipse默认编译后的class文件在bin/包路径/class文件,这里导出时不需要bin这个文件夹,把包路径和包下的class文件一起导出,并保证和配置文件目录即lib目录同级,不这么做的话在cmd命令下执行java

类名命令时会java.lang.NoClassDefFoundError错误,即使代码没有任何问题的情况下也会报该异常)。最后还应注意,比如我们的项目包都是以com.project.xxx报下,而程序入口的main文件在com.project.main包下,则cmd中执行java命令时应该进入到com包所在的目录下,比如在classes目录下则cd

classes,执行命令如下:

java -Djava.ext.dirs=./lib com.project.main.Main

其中-D参数表示加载项目所需要的jar包即lib下所有*.jar

注意:加入配置文件在项目根目录/conf/目录下,那么就必须把conf文件夹

放在和com包同一个目录下,并在代码中以conf/XXX来读取配置文件即可。

3.补充说明

这里说明下为什么在项目有配置文件的时候没什么没有采用打jar包形式来导出项目。因为如果采用打jar包的形式,则在jar在项目的时候相当于是负责配置加载的类需要读取同一个jar包下的配置文件(读取资源文件同理),这对于项目完全可以修改的情况下我们可以修改读取配置文件的方式为:

InputStream is=this.gtClass().getResourceAsStream("/conf/res.txt");

来读取配置问价或者资源文件;但是本分项目早已将加载资源文件的代码单独打为jar包,那么我们不能去修改原有代码,那么“2”中的方法就比较有效了!

三、扩展知识点

1.可运行的jar文件和普通jar文件的区别在jar包中META-INFO/MANIFEST.MF文件:其中可运行jar中指定了main方法所在类的位置,以及运行时所依赖的jar包

Rsrc-Class-Path: ./ commons-lang.jar

Class-Path: .

Rsrc-Main-Class: org.test.Main

Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

2.对于在某个包下的Main Class文件,在命令行下执行该类需要在根目录下执行

java com.project.main.Main

内容来自1jquery

命令,并且必须带包名,否则会报NoClassDefFoundError异常

3.java命令-D用来设置系统变量值;java.ext.dirs表示的是告诉虚拟机加载该路径下所有的jar文件;ext.dirs指定的jar文件由extention classloader负责加载。

java 命令行eclipse_在命令行中运行eclipse中创建的java项目相关推荐

  1. 如何使用eclipse软件创建一个Java项目?

    同学们在参加Java的时候老师肯定会教给你们如何去创建一个项目,这里怕有些同学没记住,所以单独为大家分享一篇如何使用eclipse软件创建一个Java项目教程,感觉有用的话收藏转发一下~ eclips ...

  2. java代码怎么在cmd中运行?cmd怎么打开java代码?

    java代码怎么在cmd中运行是一个比较简单的问题,但还是有很多人频繁询问,今天本篇文章为大家统一解答一下这个问题. java代码怎么在cmd中运行? 1.首先用记事本写一个简单的Java程序,保存成 ...

  3. 在wind7中运行启动hadoop出现错误 java.lang.UnsatisfiedLinkError

    在wind7中运行启动hadoop出现错误: 2017-06-23 20:10:08,526 WARN [main] util.NativeCodeLoader (NativeCodeLoader.j ...

  4. java 右shift键_【已解决】Eclipse中Ctrl+Shift+右箭头无法实现一次性选择整个单词(Ctrl+右箭头无法实现整个单词级别的移动)...

    [问题] Eclipse,在编辑代码,比如Java代码的时候,对于Ctrl+Shift+右箭头,竟然无法实现,其他大部分的代码/文字编辑软件中的: 选择整个单词,而只是选择整个单词中的其中一部分(有对 ...

  5. 并行1---mpich在ubuntu中运行--docker的创建和使用

    并行实验1 修改镜像源:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 修改教程1:https://blog.csdn.net/qq_4182264 ...

  6. java opencv 开发环境_Java + opencv学习:在Eclipse下配置基于Java的OpenCV开发环境

    最近研究OpenCV想用java进行开发,因此研究了一下怎么在Eclipse中配置基于java的Opencv. 第一步:先到OpenCV官网下载你想要的版本,假设使用的是2.4.6版本.这里附上下载地 ...

  7. 【Java进阶】有哪些方法可以在运行时动态生成一个Java类?

    在开始今天的学习前,我建议你先复习一下专栏第 6 讲有关动态代理的内容.作为 Java 基础模块中的内容,考虑到不同基础的同学以及一个循序渐进的学习过程,我当时并没有在源码层面介绍动态代理的实现技术, ...

  8. 【Dlib】在GPU环境中运行dlib中的例子dnn_mmod_ex报错...dlib::cuda_error...Error while calling cudaMalloc...

    1.问题描述 在GPU环境下运行dlib中的例子dnn_mmod_ex时,报错: terminate called after throwing an instance of 'dlib::cuda_ ...

  9. 为什么vs2005内置Web application server中调用COM组件时正常,在IIS中运行时组件创建失败?...

    如题. 在vs2005内置服务器中运行正常,发布到IIS中运行时出现组件创建失败的错误.错误页面如 下: 不知道有没有遇到过这种情况的兄弟?麻烦指点一二.谢谢!

最新文章

  1. python快速编程入门例题-Python快速编程入门,打牢基础必须知道的11个知识点 !...
  2. python有哪些作用-Python中的NumPy是什么?有什么作用?
  3. 整数的无符号编码和有符号编码
  4. ajxa异步请求数据
  5. Oracle 11g 建表 表名大小写问题
  6. CRM 里面table download to excel的实现
  7. Linux中实用但很小众的11个炫酷终端命令
  8. 用计算机探索 按一定规律排列,探索规律练习题1
  9. Java基本语法(6)--算术运算符
  10. 串口 能 按位传输吗_、 迪文串口屏TTL与主控板RS232电平信号转换方案
  11. 《悟道》读后感---赢在职场
  12. C#控制台应用程序执行结果一闪而过的解决方法
  13. 浙大开源lidar_imu_calib源码安装过程
  14. 网易2019实习生招聘算法题(一)
  15. Q2净利润同比下降1%,甲骨文转型之路错搭“老爷车”?
  16. 【Qt学习】 登录界面的简单绘制
  17. 零钱模拟器微信小程序源码下载
  18. 【ACWing】1129. 热浪
  19. (9)一步一步开发一个简单CAD之镱像和平移
  20. mysql表关联_MySQL表关联的几种常用方式

热门文章

  1. HelloWorld 和相关设置
  2. 不用现有方法,把string转换成int型[C#]
  3. Hibernate基于JDBC的批量删除
  4. 磁盘阵列,双机热备,负载均衡
  5. nginx源码分析—内存池结构ngx_pool_t及内存管理(精辟)
  6. 反思深度思考:不无脑的行动 有脑的持久行动
  7. Bug调用其他函数失败
  8. css背景上能添加文字,CSS3怎么为文字添加背景?
  9. cURL error 60: SSL certificate problem: unable to get local issuer certificate 解决思路
  10. php.ini-dist和php.ini区别,php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)...