电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

-jar参数运行应用时classpath的设置方法

2页
  • 卖家[上传人]:自***
  • 文档编号:79427814
  • 上传时间:2019-02-17
  • 文档格式:DOCX
  • 文档大小:48.48KB
  • / 2 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、-jar参数运行应用时classpath的设置方法Posted by zeal on 2005-04-28 10:20 , 3586 characters | +1-0 English转载请保留本行原始出处声明信息:http:/ (JAVA/C+):jar,classpath,类库,classloader当用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,你会发现如何设置-classpath参数应用程序都找不到相应的第三方类,报ClassNotFound错误。实际上这是由于当使用-jar参数运行的时候,java VM会屏蔽所有的外部classpath,而只以本身yourJarExe.jar的内部class作为类的寻找范围。*解决方案*一 BootStrap class扩展方案Java 命令行提供了如何扩展bootStrap 级别class的简单方法.-Xbootclasspath:完全取代基本核心的Java class 搜索路径. 不常用,否则要重新写所有Java 核心class-Xbootclasspath/a: 后缀在核心class搜索路径后面.

      2、常用!-Xbootclasspath/p: 前缀在核心class搜索路径前面.不常用,避免 引起不必要的冲突.语法如下:(分隔符与classpath参数类似,unix使用:号,windows使用;号,这里以unix为例)java -Xbootclasspath/a:/usrhome/thirdlib.jar: -jar yourJarExe.jar二 extend class 扩展方案Java exten class 存放在Java_homejrelibext目录下.当调用Java时,对扩展class路径的搜索是自动的.总会搜索的.这样,解决的方案就很简单了,将所有要使用的第三方的jar包都复制到ext 目录下.三 User class扩展方案当使用-jar执行可执行Jar包时,JVM将Jar包所在目录设置为codebase目录,所有的class搜索都在这个目录下开始.所以如果使用了其他第三方的jar包,一个比较可以接受的可配置方案,就是利用jar包的Manifest扩展机制.步骤如下:1.将需要的第三方的jar包,复制在同可执行jar所在的目录或某个子目录下.比如:jar 包在 /u

      3、srhome/yourJarExe.jar 那么你可以把所有jar包复制到/usrhome目录下或/usrhome/lib 等类似的子目录下.2.修改Manifest 文件在Manifest.mf文件里加入如下行Class-Path:classes12.jar lib/thirdlib.jarClass-Path 是可执行jar包运行依赖的关键词.详细内容可以参考http:/ Class-Path 只是作为你本地机器的CLASSPATH环境变量的一个缩写,也就是说用这个前缀表示在你的jar包执行机器上所有的CLASSPATH目录下寻找相应的第三方类/类库。你并不能通过 Class-Path 来加载位于你本身的jar包里面(或者网络上)的jar文件。因为从理论上来讲,你的jar发布包不应该再去包含其他的第三方类库(而应该通过使用说明来提醒用户去获取相应的支持类库)。如果由于特殊需要必须把其他的第三方类库(jar, zip, class等)直接打包在你自己的jar包里面一起发布,你就必须通过实现自定义的ClassLoader来按照自己的意图加载这些第三方类库。以上三种方法推荐第一种,扩展性

      4、好,操作起来也最方便.另外编写自己的ClassLoader,来动态载入class,是更加复杂和高级技术.限于篇幅,不赘述.有兴趣了解可以去google一下custom classloader,或者参考我的另一篇日志:让classpath参数走开。Java的安全机制随不同的JDK版本有不同的变化,会影响很多核心CLASS,比如Thread,所以很多大型商业软件,要求JDK的版本很严格.部分原因也在此.这也要求在发布自己编写的应用时候,不管大小,都要说明开发和测试的JDK版本.本文所述方法测试基于j2sdk 1.4.2_04-b05-附:背景知识自JDK 1.2以后,JVM采用了委托(delegate)模式来载入class采用这种设计的原因可以参考http:/ sandbox(沙盒)安装模型上提供应用层的可定制的安全机制.Java虚拟机(JVM)寻找Class的顺序1. Bootstrap classes属于Java 平台核心的class,比如java.lang.String等.及rt.jar等重要的核心级别的class.这是由JVM Bootstrap class loader来载入的.

      5、一般是放置在java_homejrelib目录下2. Extension classes基于Java扩展机制,用来扩展Java核心功能模块.比如Java串口通讯模块comm.jar.一般放置在Java_homejrelibext目录下3. User classes开发人员或其他第三方开发的Java程序包.通过命令行的-classpath或-cp,或者通过设置CLASSPATH环境变量来引用.JVM通过放置在java_homelibtools.jar来寻找和调用用户级的class.常用的javac也是通过调用tools.jar来寻找用户指定的路径来编译Java源程序.这样就引出了User class路径搜索的顺序或优先级别的问题.3.1 缺省值:调用Java或javawa的当前路径(.),是开发的class所存在的当前目录3.2 CLASSPATH环境变量设置的路径.如果设置了CLASSPATH,则CLASSPATH的值会覆盖缺省值3.3 执行Java的命令行-classpath或-cp的值,如果制定了这两个命令行参数之一,它的值会覆盖环境变量CLASSPATH的值3.4 -jar 选项:如果通过java -jar 来运行一个可执行的jar包,这当前jar包会覆盖上面所有的值.换句话说,-jar 后面所跟的jar包的优先级别最高,如果指定了-jar选项,所有环境变量和命令行制定的搜索路径都将被忽略.JVM APPClassloader将只会以jar包为搜索范围.有关可执行jar有许多相关的安全方面的描述,可以参考http:/

      《-jar参数运行应用时classpath的设置方法》由会员自***分享,可在线阅读,更多相关《-jar参数运行应用时classpath的设置方法》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.