zoukankan      html  css  js  c++  java
  • 在命令行中运行eclipse中创建的java项目

    由于项目要求,需要对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包下的配置文件(读取资源文件同理),这对于项目完全可以修改的情况
          下我们可以修改读取配置文件的方式为:
         
    Java代码 复制代码 收藏代码
    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包
        
    Java代码 复制代码 收藏代码
    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文件,在命令行下执行该类需要在根目录下执行
        
    Java代码 复制代码 收藏代码
    1. java com.project.main.Main   
         java com.project.main.Main
        

        命令,并且必须带包名,否则会报NoClassDefFoundError异常
       3.java命令-D用来设置系统变量值;java.ext.dirs表示的是告诉虚拟机加载该路径下
         所有的jar文件;ext.dirs指定的jar文件由extention classloader负责加载
  • 相关阅读:
    WRF WPS预处理
    CVS安装
    Linux窗口最小化消失,任务栏上无法找到的解决方法
    NCARG安装配置出现error while loading shared libraries: libg2c.so.0问题额解决办法
    Netcdf安装
    Embedding R-generated Interactive HTML pages in MS PowerPoint(转)
    The leaflet package for online mapping in R(转)
    Some 3D Graphics (rgl) for Classification with Splines and Logistic Regression (from The Elements of Statistical Learning)(转)
    What does a Bayes factor feel like?(转)
    Weka算法介绍
  • 原文地址:https://www.cnblogs.com/langtianya/p/3172258.html
Copyright © 2011-2022 走看看