这是我在这里的第一个问题所以请告诉我任何遗漏的内容,以便我可以添加它。
现在,我们有一个使用tomcat 7的部署,我们有5个servlet修改SQLServer DB中的一些数据,基于从5个.jar(每个servlet一个)读取的几个.XML以及所有这些。 jar是由.war发起的,我正在尝试修改它,因此它不再作为servlet工作,你可以在本地运行修改。
我在两种情况下都有相同的配置(通过tomcat和我的本地“run.bat”),并且它们都使用相同的lib来读取文件,所以其中一个人没有机会读取.XML未经验证,但在本地场景中,我得到“org.xml.sax.SAXParseException:prolog中不允许内容”
这是产生问题的行(“file”是文件的路径):
public void procesarArchivo(String file) throws SAXException, IOException, SAXException {
xr.parse(new InputSource(new StringReader(leerXML(file))));
/* i do stuff here*/
}
public String leerXML(String XMLName) {
String line = "";
StringBuffer sb = new StringBuffer();
try {
InputStream is = this.getClass().getClassLoader().getResourceAsStream(XMLName);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
is.close();
} catch (Exception e) {
sb.append(e.getMessage());
}
return sb.toString();
}
这里有servlet .log文件,可以正常工作:
INFO [Thread-1 ] - [[Cargando_reglas_del_sistema]]...
DEBUG [Thread-1 ] - [[Procesando_Archivo]]: com/systech/reglas/xml/reglas_0.xml
DEBUG [Thread-1 ] - [[Leyendo_regla]]: CTRLDOCURE.sql
/*... and so on with all the .sql*/
在这里你可以看到本地的.log文件(使用与以前相同的库)和错误,当它说“procesando archivo”意味着找到了文件,但它尝试读取它:
INFO [main ] - [[Cargando_reglas_del_sistema]]...
DEBUG [main ] - Procesando Archivo: com/systech/reglas/xml/reglas_0.xml
ERROR [main ] - org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; El contenido no está permitido en el prólogo.
我不明白为什么其中一个有效,而另一个则无法执行相同的代码。
任何帮助都将受到赞赏,并为可怜的英语感到抱歉
答案 0 :(得分:0)
我仍然不太清楚为什么,但这就是答案:
我有一个包含以下参数的配置文件:
double total = prices.stream()
.mapToDouble(price -> price.cost + price.tax)
.sum();
显然第一个没有正常工作,它找到了文件,但有一些错误,我改变了:
resReglas=./wardir/WEB-INF/lib/reglas.jar
resVistas=./wardir/WEB-INF/lib/vistas.jar
为此:
String reglasJar =props.getProperty("resReglas");
它有效!