java 工程里有配置文件 打包成jar文件 找不到配置文件的路径 这个路径该怎么写!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 工程里有配置文件 打包成jar文件 找不到配置文件的路径 这个路径该怎么写!!相关的知识,希望对你有一定的参考价值。
急急急
参考技术A getClass.getResource("去除src之后的路径") 参考技术B 您好,举例:把配置文件ccc.xml放到编译路径,如src/com.aaa.aa下面,然后再根据
String rootPath=Xxxx.class.getResource("/").getPath();
获取到编译的根路径,配置文件的地址就是rootPath+"com/aaa/aa/ccc.xml"
Java 工程打包成库需要依赖其它外部库的打包方式
2019-06-14
关键字:Java 打包、jar 打包依赖
经常会有将 Java 工程打包成一个 jar 库的形式以供其它工程调用的需求。而我们需要被打包成 jar 库的工程中也难免会有需要依赖外部其它 jar 库的情况。比如,我们自己开发一个通过 HTTP 访问网络资源的工程,这个工程需要解析 XML 文件,我们通常不会自己从零开发 XML 解析的功能,网络上已经有很多现成的 XML 解析 jar 库,直接拿来用就好了。在这种情况下,我们自己的 HTTP 访问网络资源工程在开发好以后,如果直接以普通的方式打包成 jar 库,在其它工程中引用时,是会报错的,会报一个 XML 解析相关的类找不到的异常。发生这种情况的原因就是我们的普通 jar 打包方式不会将工程中的库依赖也打包进去。
那怎么解决呢? 其实很简单。下面以 eclipse 中构建的工程为例进行讲解。
step 1
在该工程右键,选择导出工程。
step 2
在弹出的对话框中选择 JAR file
step 3
再在弹出来的对话框中勾选一些信息,一定要注意哪些能勾哪些不能勾。按照下图所示来即可
step 4
直接下一步
step 5
这一步需要注意,这里我们必须手动指定一个 MANIFEST.MF 文件,这份文件内部记载了我们的其它第三方 jar 库的依赖路径关系。
至于这个 MANIFEST.MF 文件的内容,则如下所示
Manifest-Version: 1.0
Class-Path: libs/jackson-annotations-2.9.9.jar libs/jackson-core-2.9.9.jar libs/jackson-databind-2.9.9.jar
重点内容就是上面的 Class-Path 项,这项的值填的就是你的外部库的相对路径,多个库之间以空格隔开。
需要注意的是,这些第三方的 jar 库也需要一起放到新的工程对应目录下。就是说,这些外部的 jar 库仍然不会一起打包进你自己的 jar 库里去。在你后面要引用你自己打包的 jar 库时,这些外部库也需要一并放进对应目录。
step 6
导出完成。
然后在使用方面。假设我们经过前面的步骤已经成功导出了一个名为 japi.jar 的库文件。这个时候我们新建了一个工程 japi_client_test 工程,将这个 japi.jar 作为外部库引入。
那么,正确的库文件结构应该如下图这样
在前面的 MANIFEST.MF 中我们有填到 3 个外部库,它的依赖路径为
1、libs/jackson-annotations-2.9.9.jar
2、libs/jackson-core-2.9.9.jar
3、libs/jackson-databind-2.9.9.jar
所以在这里,也必须将这 3 个第三方的 jar 库放入到一个 libs 目录下,与我们的 japi.jar 具同等地位。
最后,还不能忘记要将它们都添加到新工程的外部依赖库路径中去,如下图所示
如此一来,便大功告成了。
以上是关于java 工程里有配置文件 打包成jar文件 找不到配置文件的路径 这个路径该怎么写!!的主要内容,如果未能解决你的问题,请参考以下文章
eclipse通过maven建立java se工程配置log4j,打包成zip,将jar包和配置文件分开,并以bat和sh文件启动java程序