请教一下,我有一个jar文件(我把用到的jar包A打包进去了),我想直接运行它 。但是出现错误。
用java -jar myjar.jar 出现没有找到包A。我把jarA解压以后,再打包进去,就可以运行了。但是这个不是我想要的。
到网上找到了将jar包拷贝到jre\lib\ext下,这样,我不用将jar包A打包到我要运行的包中,也不需要解压以后再打包进去,我双击就可以运行了。但是这样也很不好,如果我有很多jar包的话,就都要把这些jar包放到jre\lib\ext下,这样很不方便,有没有办法可以使得我的jar包(里面包含其他用到的jar包),双击可以直接运行的方法啊。实在不行,我想如果可以把这些用到的jar包放在我自己的一个相对目录下面,然后设置classpath实现,这样就可以不用拷贝这么麻烦了。但是我这样尝试了,也不行。目前只能把用到的jar包拷贝到jre\lib\ext,才可以运行。
那位大虾可以帮忙看看哦不胜感激。
用java -jar myjar.jar 出现没有找到包A。我把jarA解压以后,再打包进去,就可以运行了。但是这个不是我想要的。
到网上找到了将jar包拷贝到jre\lib\ext下,这样,我不用将jar包A打包到我要运行的包中,也不需要解压以后再打包进去,我双击就可以运行了。但是这样也很不好,如果我有很多jar包的话,就都要把这些jar包放到jre\lib\ext下,这样很不方便,有没有办法可以使得我的jar包(里面包含其他用到的jar包),双击可以直接运行的方法啊。实在不行,我想如果可以把这些用到的jar包放在我自己的一个相对目录下面,然后设置classpath实现,这样就可以不用拷贝这么麻烦了。但是我这样尝试了,也不行。目前只能把用到的jar包拷贝到jre\lib\ext,才可以运行。
那位大虾可以帮忙看看哦不胜感激。
用ECLIPSE直接打包不就行了
其中第二级别扩展级别的ClassLoader就对应jre/lib/ext目录至于你希望在jar包中引入别的jar,当然需要设置classpath。2楼的方法应该是可行的“在myjar.jar的META-INF/MANIFEST.MF里面加上Class-Path: 相对路径/A.jar"只是你不确定到底问题出在哪里的时候教你可以在程序中加这么一句来查看当前程序的classpath到底包括那些:System.out.println(System.getProperty("java.class.path"));其实System有很多这样的Property,包括操作系统和JVM的参数都能看到,对调适程序很有帮助的
类加载器会忽略 -classpath 所指定的类库,需要在 MANIFEST.MF 文件中指定,
或将类库拷贝至 ext 目录下(这个目录下类加载高于 classpath),但是不推荐
把类库放在这个目录下。建议放在 MANIFEST.MF 文件中,指定 Class-Path: 属性,比如:Main-Class: test.Main
Class-Path: lib/abc.jar lib/123.jar注意:上面的冒号后有一个空格,并且在文件结束处最少有两个空行(MANIFEST.MF 规范极其严格)将这个 MANIFEST.MF 打包至 jar 文件的 META-INF 下,比如取名为:my.jar在 my.jar 的同一路径下建一个 lib 目录(即 Class-Path 中的名字),把那两个 jar 拷贝进去
再退至 my.jar 目录,使用 java -jar my.jar 就可以运行了。