java中如何从当前项目中读取运行另一项目中的配置文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何从当前项目中读取运行另一项目中的配置文件?相关的知识,希望对你有一定的参考价值。

目录结构如上图所示:
//测试代码
public class TestConn

//Test1项目的main方法
public static void main(String[] args) throws Exception
Test t = new Test();//Test项目中的类,Test1项目依赖于Test项目
t.out();//会打印输入Test项目中的DataAccess.xml配置文件路径,为D:\workspace\Test\DataAccess.xml
//此处从Test1项目中加载,打印输入了D:\workspace\Test1\DataAccess.xml出错,系统找不到指定的文件


错误提示:
D:\workspace\Test1\DataAccess.xml
org.dom4j.DocumentException: DataAccess.xml (系统找不到指定的文件。) Nested exception: DataAccess.xml (系统找不到指定的文件。)
at org.dom4j.io.SAXReader.read(SAXReader.java:266)
at com.sherp.test.DataAccess.<clinit>(DataAccess.java:24)
at com.sherp.test.Test.out(Test.java:7)
at com.mj.test.TestConn.main(TestConn.java:10)
Nested exception:

使用url统一资源定位符,前提是需要有访问文件的权限。


import java.io.File;
import java.net.URL;

import org.apache.commons.io.FileUtils;

public class DownloadURLFile 

/**
 * @param args
 */
public static void main(String[] args) 

String res = downloadFromUrl("http://images.17173.com/2010/www/roll/201003/0301sohu01.jpg","d:/");
System.out.println(res);



public static String downloadFromUrl(String url,String dir) 

try 
URL httpurl = new URL(url);
String fileName = getFileNameFromUrl(url);
System.out.println(fileName);
File f = new File(dir + fileName);
FileUtils.copyURLToFile(httpurl, f);
 catch (Exception e) 
e.printStackTrace();
return "Fault!";
 
return "Successful!";


public static String getFileNameFromUrl(String url)
String name = new Long(System.currentTimeMillis()).toString() + ".X";
int index = url.lastIndexOf("/");
if(index > 0)
name = url.substring(index + 1);
if(name.trim().length()>0)
return name;


return name;

参考技术A 问题在,你在new File的时候没有指定绝对路径

用程序获取的话,它获取的是当前项目的路径,所以输出D:\workspace\Test1\DataAccess.xml
而你的DataAccess.xml文件在Test下,所以报错本回答被提问者采纳
参考技术B 如果要运行另外一个项目的配置文件的吧 你必须在项目中对另外一个项目进行引用 也就是通过jar包或者webservice方式进行引用追问

已经直接引用关联上了.

追答

报的FileNotFoundException吧

追问

嗯 ,对的.

追答

通过new File("路径")进行获取

jar方式运行项目-读取jar包中的文件

参考技术A

在目前的微服务和容器部署的SpringBoot坏境下,我们一般将项目直接打成 jar包的方式运行(java -jar *),我们可能需要读取resources目录下的自定义文件,想在程序运行时找到该目录,并读取需要的文件。

当时我使用 System.getProperty("user.dir") 获取工作目录的坑,本地idea工具运行没问题,但是一但打成jar包,路径会变成jar包所在的目录,无法读取jar内部的文件, 不建议用这种方式

由于jar中的文件都属于资源的一种,所以获取需从类加载器进行获取。正确的姿势是采用 this.getClass().getClassLoader().getResourceAsStream() 的方式。

读取自定义文件时,由于getResourceAsStream方法返回的是一个InputStream流,采用InputStreamReader这种方式 最好指定一种编码方式 ,不然可能 中文乱码 !(我在解析xml时中文乱码)

以上是关于java中如何从当前项目中读取运行另一项目中的配置文件?的主要内容,如果未能解决你的问题,请参考以下文章

jar方式运行项目-读取jar包中的文件

java 获取当前类的路径

如何从项目目录中读取 javascript 中的属性文件?

java web项目 web.xml中如何读取properties配置文件中的值?

pycharm虚拟环境中的项目如何在别的电脑上运行?

为啥我的Java Web项目在另一台机子上可以运行,到了另一台机子上就出错了,报的是404和500错误