展开全部

你所说的可执行文件,就是jar包吗?e69da5e6ba903231313335323631343130323136353331333337613164

自己生成的jar文件,执行需要指明所依赖的其他lib包,建议查下,如何配置。应该是你的程序的运行时没有指定依赖包。大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口。

具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。

比如有个叫做test.jar的jar包,里面有一个拥有main函数的main class:test.someClassName

我们就只要在MANIFEST.MF里面添加如下一句话:

Main-Class: test.someClassName

然后我们可以在控制台里输入java -jar test.jar即可以运行这个jar。

但是我们这个项目需要引用其他第三方的jar包,在eclipse里面以项目jar包的形式引用了这个叫做some.jar的包,当时放在项目的lib子目录下,最后项目打包时把这个some.jar也打进来了,但是用java -jar执行这个test.jar的时候报找不到Class异常,原因就是jar引用不到放在自己内部的jar包。

那怎么办?

运行时将其加入classpath的方式行不行?就是在运行jar的同时加入classpath参数:

java -classpath some.jar -jar test.jar

这种方式是不行的,因为使用classpath指定的jar是由AppClassloader来加载,java 命令 加了-jar 参数以后,AppClassloader就只关注test.jar范围内的class了,classpath参数失效。

那该怎么引用其他的jar包呢?

方法一、使用Bootstrap Classloader来加载这些类

我们可以在运行时使用如下参数:

-Xbootclasspath:完全取代系统Java classpath.最好不用。

-Xbootclasspath/a: 在系统class加载后加载。一般用这个。

-Xbootclasspath/p: 在系统class加载前加载,注意使用,和系统类冲突就不好了.

win32 java -Xbootclasspath/a: some.jar;some2.jar; -jar test.jar

unix    java -Xbootclasspath/a: some.jar:some2.jar: -jar test.jar

win32系统每个jar用分号隔开,unix系统下用冒号隔开

方法二、使用Extension Classloader来加载

你可以把需要加载的jar都扔到%JRE_HOME%/lib/ext下面,这个目录下的jar包会在Bootstrap Classloader工作完后由Extension Classloader来加载。非常方便,非常省心。:)

方法三、还是用AppClassloader来加载,不过不需要classpath参数了

我们在MANIFEST.MF中添加如下代码:

Class-Path: lib/some.jar

lib是和test.jar同目录的一个子目录,test.jar要引用的some.jar包就在这里面。

然后测试运行,一切正常!

如果有多个jar包需要引用的情况:

Class-Path: lib/some.jar lib/some2.jar

每个单独的jar用空格隔开就可以了。注意使用相对路径。

另:如果META-INF 下包含INDEX.LIST文件的话,可能会使Class-Path配置失效。INDEX.LIST是Jar打包工具打包时生成的索引文件,删除对运行不产生影响。

方法四、自定义Classloader来加载

这种方法是终极解决方案,基本上那些知名java应用都是那么干的,如tomcat、jboss等等。

这种方式有点复杂,需要专门开贴讨论。关于ClassLoader的原理和自定义ClassLoader可以参考这篇http://cuixiaodong214.blog.163.com/blog/static/951639820099135859761

总结:

以上四种方法都可以用,特别是程序运行在非常单纯的环境中时。但是,如果是运行在多任务,多应用的环境中时,最好每个应用都能相互独立,第一种和第二种方案都有可能对其他应用产生影响,因此最好就是选择第三种和第四种。

mysql怎么生成可执行文件_查询mysql数据库的java程序在myeclipse上运行正常,但生成可执行文件后查询不出结果。问题出在哪儿呢?...相关推荐

  1. java打印星号_【其它】编写Java程序在屏幕上打印用星号组成的等腰三角形

    参考答案如下 编写[多选题]文学象征的特征有() 程序成[简答题]Translate the above passage into Chinese to get more precisely what ...

  2. java只能在运行和编译吗_如何在另一个Java程序中编译和运行Java程序?

    斯蒂芬大帝 我修改了代码以包括一些检查:public class Laj {  private static void printLines(String name, InputStream ins) ...

  3. java程序编译成exe文件_将java程序编译成独立运行的exe文件

    将java程序编译成独立运行的exe文件 众所周知java的程序可以"一次编译,到处运行",这个特性不错,但是实现这个特性的前提是当前的平台 必须有相应的jvm,而且如果当前平台的 ...

  4. 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...

    编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...

  5. mysql导入dat文件_.dat导入数据库

    SQL Server中bcp命令的用法以及数据批量导入导出 0.参考文献: SQL Server BCP使用小结 bcp Utility 某社区600万用户数据导入MYSQL.MSSQL.Oracle ...

  6. 深入浅出mysql唐汉名_深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -...

    create schema deepInMySql; use deepInMySql; -- 查看当前默认存储引擎 show variables like '%table_type%'; -- 查看当 ...

  7. mysql设置自动递增_《MySQL数据库》约束条件和自增长序列

    一.约束(constraint) 约束就是在表上强制执行的一种校验规则,当执行DML操作时,数据必须符合这些规则,如果不符合,将无法执行. 约束的全称:约束条件,也称之为完整性约束条件.可以保证表中数 ...

  8. mysql not exists无效_分析MySQL中哪些情况下数据库索引会失效

    要想分析MySQL查询语句中的相关信息,如是全表查询还是部分查询,就要用到explain. 一.explain 用法:explain +查询语句. id:查询语句的序列号,上面图片中只有一个selec ...

  9. mysql命令4类_【Mysql】mysql数据库的一些常用命令

    一.启动与退出 1.进入MySQL: 输入命令:mysql -u root -p 直接输入安装时的密码即可. 此时的提示符是:mysql> 2.退出MySQL:quit或exit 3.数据库清屏 ...

最新文章

  1. 大数据、智慧城市成生态贵州新名片
  2. 汇总|目标检测中的数据增强、backbone、head、neck、损失函数
  3. python 出现 AttributeError: matplotlib‘ object has no attribute ‘to_rgba‘
  4. Spark Java API:Transformation
  5. java XML解析防止外部实体注入
  6. python远程调用摄像头_Python设置Socket代理及实现远程摄像头控制的例子
  7. 跳坑成功,手摸手带你使用PHP连接Oracle数据库
  8. RTP/RTCP/RTSP/SIP/SDP简介
  9. python查询注册表子项是否存在并操作
  10. 孪生网络图像相似度_图像相似度比对
  11. matlab人脸识别论文,基于matlab的人脸识别系统设计本科毕业论文(设计).doc
  12. 天使投资人给创业者的一封信
  13. 基于GITHUB ACTION的定时任务,真香!
  14. VLC的windows版本下载
  15. 怎样将图片体积缩小?如何一键完成图片压缩?
  16. centos php-fpm 位置,centos 如何安装 php-fpm
  17. Vue的各种杂乱知识点整理(持续更新中...)
  18. 爬虫实战3:模拟登陆知乎并爬取任意帖子数据
  19. 手动搭建webase(1)——节点前置服务
  20. 关于科研技术的一些常用网址

热门文章

  1. 和朱晔一起复习Java并发(二):队列
  2. BZOJ 4238 电压 解题报告
  3. Oracle解锁scott账号
  4. Apache重定向方法实现图片防盗链
  5. HFUT 1357.梯田AGAIN(安徽省2016“京胜杯”程序设计大赛 D)
  6. SQL数据库相关 FMDB框架的使用
  7. hdu 3917 Road constructions 最大权闭合子图
  8. Linux中VMware虚拟机硬盘空间扩大方法
  9. 苏州大学文正学院计算机专业,苏州大学文正学院有哪些专业及什么专业好
  10. 计算机求是科学班2020年招生,浙江大学2020年三位一体综合评价招生分析:取消笔试,名额增加...