由于项目要求,需要对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.xxx报下,而程序入口的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包下的配置文件(读取资源文件同理),这对于项目完全可以修改的情况
      下我们可以修改读取配置文件的方式为:

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

来读取配置问价或者资源文件;
     但是本分项目早已将加载资源文件的代码单独打为jar包,那么我们不能去修改原有
      代码,那么“2”中的方法就比较有效了!
三、扩展知识点(备忘)
   1.可运行的jar文件和普通jar文件的区别在jar包中META-INFO/MANIFEST.MF
     文件:其中可运行jar中指定了main方法所在类的位置,以及运行时所依赖的jar包

  1. Rsrc-Class-Path: ./ commons-lang.jar
  2. Class-Path: .
  3. Rsrc-Main-Class: org.test.Main
  4. Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
    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文件,在命令行下执行该类需要在根目录下执行

  1. java com.project.main.Main
     java com.project.main.Main
    

命令,并且必须带包名,否则会报NoClassDefFoundError异常
   3.java命令-D用来设置系统变量值;java.ext.dirs表示的是告诉虚拟机加载该路径下
     所有的jar文件;ext.dirs指定的jar文件由extention classloader负责加载

在命令行中运行eclipse中创建的java项目的更多相关文章

  1. Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,将全部来与官网 我猜去全部机翻+个人 ...

  2. Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

    Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...

  3. Windows下使用MinGW在命令行编译运行C++程序

    之前学习C语言的时候都是用IDE类似CodeBlocks的工具写完直接编译运行的,今天突然心血来潮,自己下一个编译器,在命令行下,编译运行C++程序,了解一下编译过程. 一.安装编译器 首先你需要下载 ...

  4. 在命令行终端运行 Elisp 脚本

    通常,我们在 Emacs 中运行 Elisp 代码片段,但是也可能需要在命令行终端运行 Elisp 脚本程序.在命令行终端运行 Elisp 脚本需要使用 --script 选项,例如: emacs - ...

  5. 终端命令行编译运行C#程序HelloWorld

    终端命令行编译运行C#程序HelloWorld 今天忽然有人问我,刚学习java程序的时候,一般老师都会建议我们从配置环境变量开始从命令行编译运行程序,那么学习c#的时候基本是直接安装visual s ...

  6. jmeter命令行模式运行,实时获取压测结果

    jmeter命令行模式运行,实时获取压测结果 jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script. ...

  7. 您可以从 Windows 命令行上运行 gcc、g++、ar、ranlib、dlltool 和其他一些 GNU 工具

    Windows 上的安装为了在 Windows 上安装 GCC,您需要安装 MinGW.为了安装 MinGW,请访问 MinGW 的主页 www.mingw.org,进入 MinGW 下载页面,下载最 ...

  8. 命令行下运行 java someClass.class出现 “错误:找不到或无法加载主类someClass ” 的解决方案

    假设在C:\Java\code\目录下建立了如下 Test.java文件: package code; public class Test { public static void main(Stri ...

  9. Jmeter使用非 GUI 模式,即命令行模式运行实例讲

    转载:http://www.cnblogs.com/leeboke/p/5238269.html 参考资料:https://girliemangalo.wordpress.com/2009/10/29 ...

随机推荐

  1. 《信息安全系统设计基础》第一次实验报告--Linux 基础入门

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全设计基础 班级:1352  姓名:何伟钦  学号:20135223 成绩:            指导教师:娄嘉鹏 ...

  2. 信息安全系统设计基础exp_5

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础 班级:1353 姓名:郑伟.吴子怡 学号:20135322.20135313 指导教师: 娄嘉鹏 实验 ...

  3. JDSideMenu实现(整块)侧滑功能,主视图会和状态栏(StatusBar)会一起滑动。

    JDSideMenu 实现侧边菜单功能,支持手势滑动.跟一般的侧边菜单不一样的是,滑动主视图,主视图会和状态栏(StatusBar)会一起滑动. demo 自行下载

  4. aptana studio 3汉化方法 及支持jquery的方法

    之前看弦哥的 Asp.Net大型项目实践系列第二季(一)哥欲善其事,必先利其器 看到他介绍了aptana,好像用来学习js是个好工具... 因为不论你写什么,都会提示你它在各个浏览器中是否被支持... ...

  5. Asp.Net MVC 合并js或css请求

    Step1:BundleConfig中注册 bundles.Add(new ScriptBundle("~/isValid").Include(  "~/Scripts/ ...

  6. EasyUI实战经验总结,给有需要的人

    最近公司培训EasyUI,就做下总结吧,给有需要的人. 1.最常用的表格 <div class="easyui-panel" data-options="regio ...

  7. SequoiaDB 系列之一 :SequoiaDB的安装、部署

    在分析或者参与一个开源项目之前,了解项目构建的目的是有必要的. 既然SequoiaDB是NoSQL数据库产品,则必然存在于传统关系型数据库相同的功能点:数据的增.删.改和查询(CRUD). 先了解怎么 ...

  8. Symfony启动过程详细学习

    想了解symfony的启动过程,必须从启动文件(这里就以开发者模式)开始. <?php /* * web/app_dev.php */ $loader = require_once __DIR_ ...

  9. oracle-7参数文件的管理

    参数文件的管理:1.参数文件的作用:记录数据库的配置的 (1)pfile  ---> 文本文件 (2)spfile --->服务器的参数文件(二进制的) 两个参数文件的区别: pfile ...

  10. OC基础--关键字@property 和 @synthesize

    一.@property关键字需要掌握的知识: 1.用在@interface中,用来自动生成setter和getter的声明 例:@property int age;--相当于执行了右边的代码--> ...