运行jar的时候如何调用另一个外面的jar文件

langmanchangfeng 2010-11-03 10:10:19
我在运行一个jar文件的时候需要用到另一个包外面的jar文件,请问这个时候应该如何调用(主程序的运行需要调用基础类库,但是这些度没有打包到主程序的jar文件之中)
...全文
778 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
langmanchangfeng 2010-11-09
  • 打赏
  • 举报
回复
可以运行了,非常感谢,应该是不支持绝对路径的问题
雨雪飘零 2010-11-09
  • 打赏
  • 举报
回复
如果需要加 Class-Path, 那就在 Class-Path完了以后, 加入一个空行
也就是说, 不管你加入了多少东西, 要在文件的最后, 加一个空行
雨雪飘零 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 langmanchangfeng 的回复:]
有人知道吗?现在还是打不开,找不到入口
[/Quote]
上面没弄好, 重来一遍

MANIFEST.MF文件

-------------------------------------------
Manifest-Version: 1.0
Main-Class: com.ryouka.ligy.main.Main
// 问题是这里, 这里要有一个空行
-------------------------------------------
雨雪飘零 2010-11-09
  • 打赏
  • 举报
回复
很简单, MANIFEST.MF文件

Manifest-Version: 1.0
Main-Class: com.xxx.Main
// 问题是这里, 这里要有一个空行
ChDw 2010-11-09
  • 打赏
  • 举报
回复
Class-Path 一般不支持绝对目录吧,一般都是使用相对目录,而且用/这个替代\,还有我说了,是空格分开不是回车!


再说个问题,如果java -jar你一直解决不了,你就不会java -cp kibatch.jar;lib.jar jp.co.krosaki.framework.batch.KiBatchExecutor KIF014HB 11

就可以啦,这么简单的解决办法都不用,非要使用复杂的干什么!!!
langmanchangfeng 2010-11-09
  • 打赏
  • 举报
回复
有人知道吗?现在还是打不开,找不到入口
langmanchangfeng 2010-11-04
  • 打赏
  • 举报
回复
写了的,不加class-path这个属性是可以找到的,只是提示无法找到外部包的文件,但是加上之后就找不到程序的入口了
ChDw 2010-11-04
  • 打赏
  • 举报
回复
那你要在MF中写Main-Class这个属性啊。不可能找不到的
langmanchangfeng 2010-11-04
  • 打赏
  • 举报
回复
我在manifest中全部把外部的jar都写进去了,但是运行的时候反而找不到程序的入口了
langmanchangfeng 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hx_java 的回复:]

外部jar你放到运行项目同级目录,或者临级目录; 直接用相对路径写;应该可以的;
多个外部jar文件,可以这样配置 MANIFEST.MF文件
Manifest-Version: 1.0
Main-Class: ThreadTest
Class-Path: lib\emaysdkclient.jar
lib\sqljdbc.jar
lib\activation-1.1.ja……
[/Quote]
这个是manifest配置文件:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_04-b05 (Sun Microsystems Inc.)
Main-Class: jp.co.krosaki.framework.batch.KiBatchExecutor
Class-Path: D:\kibatch.jar <--这个是主程序所在的jar文件
D:\lib\commons-logging-1.1.1.jar
D:\lib\junit-4.6.jar
D:\lib\KiBatBase.jar
D:\lib\log4j-1.2.15.jar
D:\lib\ojdbc14.jar
下面是批处理运行文件:
java -jar kibatch.jar KIF014HB 11
echo %ERRORLEVEL%

pause


还是现实无法找到程序入口

hx_java 2010-11-04
  • 打赏
  • 举报
回复
就是这么奇怪; 不知道为什么要这么写。不过这么写确实可以; 我当初也话费不少精力找这个...
hx_java 2010-11-04
  • 打赏
  • 举报
回复
外部jar你放到运行项目同级目录,或者临级目录; 直接用相对路径写;应该可以的;
多个外部jar文件,可以这样配置 MANIFEST.MF文件
Manifest-Version: 1.0
Main-Class: ThreadTest
Class-Path: lib\emaysdkclient.jar
lib\sqljdbc.jar
lib\activation-1.1.jar
lib\commons-beanutils-1.7.0.jar
lib\commons-codec-1.3.jar
lib\commons-httpclient-3.0.jar
lib\commons-logging-1.0.4.jar


注意:多个jar文件时;每个jar前面留一个空格,后面留一个空格;格式如上所示:
我测试过,可以运行的
langmanchangfeng 2010-11-03
  • 打赏
  • 举报
回复
classpath是系统的classpath,还是在批处理的时候set的?我在批处理里全部写全了也还是找不到要调用的那个方法
kokobox 2010-11-03
  • 打赏
  • 举报
回复
1.用fat jar 工具把两个jar合并了,这样比较简单,直接运行,相互条用都不是问题。
2.把jar路径都引用到classpath中去,直接调用。



langmanchangfeng 2010-11-03
  • 打赏
  • 举报
回复
我在批处理开头就设置了set classpath=D:\lib;而且我把所有的jar包的绝对路径都写了之后还是找不到需要的class文件
龙四 2010-11-03
  • 打赏
  • 举报
回复
似乎用java -jar方式运行程序系统设置的PATH和CLASSPATH已经不起作用了,需要在MANIFEST.MF或者参数中设置
langmanchangfeng 2010-11-03
  • 打赏
  • 举报
回复
set classpath=D:\lib;<--这个是需要的外部jar包的文件夹
java -jar kibatch.jar KIF014HB 11
echo %ERRORLEVEL%
运行之后还是显示无法找到class错误
ChDw 2010-11-03
  • 打赏
  • 举报
回复
如果你是使用java -jar xx.jar来运行的话,你可以在xx.jar中的META-INF\MANIFEST.MF文件中添加Main-Class一行来指定主类,添加Class-Path来指定它所需要的jar(以空格分开)
langmanchangfeng 2010-11-03
  • 打赏
  • 举报
回复
还是现实无法找到class错误,请问是不是要设置环境变量什么?
houjin_cn 2010-11-03
  • 打赏
  • 举报
回复
两个方法:

1) 在运行时参数加上 -cp 外部.jar
2) 直接把外部的jar合并到主jar中
加载更多回复(5)

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧