由于项目要求,需要对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. 20135202闫佳歆--week 8 实验:理解进程调度时机跟踪分析进程调度与进程切换的过程--实验及总结

    week 8 实验:理解进程调度时机跟踪分析进程调度与进程切换的过程 1.环境搭建: rm menu -rf git clone https://github.com/megnning/menu.gi ...

  2. IOS开发之—— Core Foundation对象与OC对象相对转换的问题

    对ARC盲目依赖的同学: 1过度使用block后,无法解决循环引用问题 2遇到底层Core Foundation对象,需要自己手工管理它们的引用计数时,显得一筹莫展 first:对于底层Core Fo ...

  3. ios——视频 MPMoviePlayerController的使用(支持本地和网络)

    视频 MPMoviePlayerController 在iOS中播放视频可以使用MediaPlayer.framework种的MPMoviePlayerController类来完成,它支持本地 视频和 ...

  4. 从无重复大数组找TOP N元素的最优解说起

    有一类面试题,既可以考察工程师算法.也可以兼顾实践应用.甚至创新思维,这些题目便是好的题目,有区分度表现为可以有一般解,也可以有最优解.最近就发现了一个这样的好题目,拿出来晒一晒. 1 题目 原文: ...

  5. <实训|第二天>掌握linux6.7中安装vmware、vmware安装linux发行版本以及遇到的问题最后libreoffice的安装

    期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教程,包括今天学到 ...

  6. 怎样开发单页面app

    groot.view("myview", function (vm, ve) { ve.loada = function () { require("./app/page ...

  7. C#6.0特性(快来围观)

    说明一下,很多博友一进来就认为仅仅是语法糖,C#语法的更新,代表着它的进步,语法糖是为了让我们更好的实现语句和功能,增加了易读性和易用性.而且它的每次进步,也会给我们带来新的支持和改进.比如C#(4. ...

  8. Git.Framework 框架随手记--ORM查询数据集合 二

    一.  分组查询 在SQL中使用Group By 来对数据分组,在实际中分组中一般与聚合函数一并使用.在Git.Framework中提供了相应的分组方法 DataTable Group(T entit ...

  9. HTC Vive 体验的折腾经历

    HTC Vive 是个什么东西, 想必我就不用介绍了, 不知道自己百度吧 HTC Vive发布已经有一段时间了, 一直很纠结买还是不买, 这玩意太贵(官网6888),买了还不能直接用, 还要配太高性能 ...

  10. Windows Azure 名词定义(Glossary)

    Glossary(名词) Definition(定义) Availability Set 可用性组 refers to two or more Virtual Machines deployed ac ...