我为应用程序创建可执行jar时出现问题,我无法读取资源文件夹中的任何文件。 资源文件位于:src>主要>资源。
我有一个.xml配置文件和log4j.properties文件。
当我从Eclipse中运行应用程序时,一切正常(xml被读出并创建了日志文件)但是当我将其部署为可执行jar时,突然没有再写入日志文件而classLoader.getResource(xmlFile)返回空。
知道如何解决这个问题吗?
这是我使用的一段代码: 参数xmlFile只是文件名,例如'readMe.xml'
private Document xmlDocument (String xmlFile) throws ParserConfigurationException, SAXException, IOException{
// return null if the file is not an xml file
System.out.println(" - xmlFile : " + xmlFile);
if(! xmlFile.substring(xmlFile.lastIndexOf(".") + 1).toLowerCase().equals("xml") ){
return null;
}
//Get Document Builder
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//Build Document
ClassLoader classLoader = getClass().getClassLoader();
URL res = classLoader.getResource( xmlFile);
System.out.println(" - res : " + res);
File file = new File( classLoader.getResource( xmlFile).getFile() );
if (file == null){
System.out.println(" - xmlDocument - OUT");
return null;
}
Document document = builder.parse(new File(classLoader.getResource(xmlFile).getFile()));
//Normalise the XML Structure;
System.out.println(" - xmlDocument 5 - before normalizing document");
document.getDocumentElement().normalize();
return document;
}
答案 0 :(得分:0)
您可能必须在类路径中指定资源,请尝试此操作。
<base_paths>/config
,然后将jars复制到目录<base_paths>/lib
。
java -cp <base_paths>/config;<base_paths>/lib/yourJar.jar com.xyz.YourMainclass
在Unix中
java -cp <base_paths>/config:<base_paths>/lib/yourJar.jar com.xyz.YourMainclass