读取位于java Web应用程序中APP-INF / lib中的jar内的xml文件

时间:2018-06-11 10:28:08

标签: xml jar lib

我在java企业Web应用程序(使用Weblogic)时遇到此问题:

如何找到位于APP-INF / lib中的jar中的xml(我不知道全名)文件?

我需要读取一个位于jar内的xml文件。我输入jar的名称(例如" NERD")并且必须得到NERD-00.jar并在RNERD-00017.xml内找到(我不知道完整的xml的名称所以我需要使用类似" NERD .xml")的模式。

jar在APP-INF / lib中,我在Web应用程序的战争中调用struts 1动作中的所有内容。 我已经做了一切,但我使用了一个位于web-app文件夹中的jar(参见下面的代码)。

所以问题是如何到达位于APP-INF / lib文件夹中的jar。

Thankx

以下是来自战争中的ACT_PageCreator.java的一些代码,它们可以在" local"环境:

//get the inputstream for jar - THE PROBLEM is HERE: HOW TO GET THIS JAR IF IT IS IN APP-INF/LIB
InputStream istr = this.getClass().getClassLoader().getResourceAsStream(jarName +"-00.00017.jar");

//if the inputstream is ok then I create the inputstream for jar (ZipInputStream) and then I look for *jarName*.xml file

String theString="";
if (null != istr) {
BufferedReader reader = new BufferedReader(new InputStreamReader(istr));
Reader fileReader = new InputStreamReader(istr);
ZipInputStream zin = new ZipInputStream(istr);

ZipEntry ze = null;

Pattern p = Pattern.compile(".*" + jarName + ".*xml");
Matcher m = null;
String absPath = "";
InputStream istr12 = null;

while ((ze = zin.getNextEntry()) != null) {

m = p.matcher(ze.getName());

if (m.find())
  {      
istr12 = getClass().getClassLoader().getResourceAsStream(ze.getName());

   if (istr12 == null)
    {
istr12 = Class.forName(nomeClasseInputBs).getClassLoader().getResourceAsStream(ze.getName());
    }

    //transform to string 
    StringWriter writer = new StringWriter();
IOUtils.copy(istr12, writer);
theString = writer.toString();

       }

        }
//do something with theString string

0 个答案:

没有答案